Pharo的循环

标签: pharo ; smalltalk ;


记次循环

4 timesRepeat: [ doSomething ]

区间循环

0 to: 100 do: [ :i | ... ]
0 to: 100 by: 3 do: [ :i | ... ]

0 to: 100 返回一个 Interval(区间) 对象,Interval 是 Collection 的子类。do:是Collection的通用方法。因此,上面的两种循环与下面的遍历循环是等价的。

aCollection do: [ :each | ... ]

do:只是最基本的迭代器

  • collect: 收集结果, 相当于 map

    #(1 2 3 4 5) collect: [ :i | i odd ] => #(true false true false true)

  • select: 选择匹配的条目, 相当于 filter

    #(1 2 3 4 5) select: [ :i | i odd ] => #(1 3 5)

  • reject: 排除匹配的条目, 相当于反向的 filter

    #(1 2 3 4 5) reject: [ :i | i odd ] => #(2 4)

  • detect: 获取第一个匹配的条目

    #(1 2 3 4 5) detect: [ :i | i odd ] => 1

  • detect:ifNone: 获取第一个匹配的条目,如果不匹配则返回指定的默认值

    #(1 2 3 4 5) detect: [ :i | i < 0 ] ifNone: [ false ] => false

  • includes: 测试是否包含

while 循环

[ aBoolean ] whileTrue: [ doSomething ]