如何从Ordered集合中的Text获取所有项目

时间:2013-01-25 04:02:24

标签: smalltalk pharo

我得到的简单问题

|list string|
list:= #('ab' 'efghij' 'lmnopqrst'). "Ordered collection"
list do:[:each| "string with:each"  i know this is not right how do i add items ].

我也尝试了溪流它让我回复了这个“有序的收藏品('ab''effij''lmnopqrst')”

我需要的只是一个

的文本
'abc efghij lmnopqrst '

2 个答案:

答案 0 :(得分:7)

在Pharo你可以做到

Character space join: list

如果join:不可用并且它应该运行良好,那么您可以使用流变体

String streamContents: [:stream| 
    list 
        do [:each| stream nextPutAll: each ]
        separatedBy: [ stream nextPut: Character space ]

答案 1 :(得分:3)

Object类定义了一条#asString消息,内容为:

"Answer a string that represents the receiver."

所以,你可以这样做:

| aList aStringsList |
aList := #('ab' 'efghij' 'lmnopqrst'). "Array"
aStringsList := aList collect: [ :each | each asString ]

aStringsList将成为Array每个String成员调用#asString aList的{​​{1}}。

如果您想在一个String中连接所有这些内容,则可以使用集合的#inject:into:方法而不是#collect:

aList inject: '' into: [ :text :each | text , each asString , ' ' ]

如果您打印出来,您将获得所需的'ab efghij lmnopqrst ':)