4

我得到的简单问题

|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''efghij''lmnopqrst')”

我所需要的只是一个具有

'abc efghij lmnopqrst '
4

2 回答 2

7

在Pharo你可以做

Character space join: list

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

String streamContents: [:stream| 
    list 
        do [:each| stream nextPutAll: each ]
        separatedBy: [ stream nextPut: Character space ]
于 2013-01-25T07:44:25.670 回答
3

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

"Answer a string that represents the receiver."

所以,你可以这样做:

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

并且aStringsList将是通过调用in 每个's 成员返回Array的s 中的一个。String#asStringaList

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

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

如果你打印出来,你会得到'ab efghij lmnopqrst '你想要的:)

于 2013-01-25T06:13:34.873 回答