当前位置:  开发笔记 > 编程语言 > 正文

如何在Smalltalk中复制最多n个集合元素?

如何解决《如何在Smalltalk中复制最多n个集合元素?》经验,为你挑选了3个好方法。

是否有优雅的单行内容可以复制集合中的最多n个元素?

我发现编写以下繁琐的内容:

limit := collection size min: n.
copy := collection copyTo: limit

有没有更好的办法?

编辑 - 还有一个更难的问题:最多复制最后 n个元素



1> aka.nice..:

还有流消息:

'foobar' readStream next: 3.
'foobar' readStream next: 10.

在Squeak/Pharo使用中next:,当没有可用的元素时,它将自动截断.

在其他方言如VW&Dolphin中使用更明确的方法nextAvailable:来避免错误.



2> 小智..:

不确定是否已经存在完全符合他的方法,但您可以添加一个:

SequenceableCollection>>#copyAtMost: n
   ^ self first: (self size min: n)

然后你可以:

collection := 1 to: 100.
collection copyAtMost: 101



3> Tobias..:

没有专门的消息,但为什么不:

aCollection first: (aCollection size min: n)

aCollection last: (aCollection size min: n)

推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有