mel*_*des 4 collections smalltalk
是否有优雅的单行内容可以复制集合中的最多n个元素?
我发现编写以下繁琐的内容:
limit := collection size min: n.
copy := collection copyTo: limit
Run Code Online (Sandbox Code Playgroud)
有没有更好的办法?
编辑 - 还有一个更难的问题:最多复制最后 n个元素
还有流消息:
'foobar' readStream next: 3.
'foobar' readStream next: 10.
Run Code Online (Sandbox Code Playgroud)
在Squeak/Pharo使用中next:,当没有可用的元素时,它将自动截断.
在其他方言如VW&Dolphin中使用更明确的方法nextAvailable:来避免错误.
小智 5
不确定是否已经存在完全符合他的方法,但您可以添加一个:
SequenceableCollection>>#copyAtMost: n
^ self first: (self size min: n)
Run Code Online (Sandbox Code Playgroud)
然后你可以:
collection := 1 to: 100.
collection copyAtMost: 101
Run Code Online (Sandbox Code Playgroud)
没有专门的消息,但为什么不:
aCollection first: (aCollection size min: n)
Run Code Online (Sandbox Code Playgroud)
和
aCollection last: (aCollection size min: n)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
161 次 |
| 最近记录: |