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 ].

ストリームも試してみましたが、これが返されました

私が必要とするのは、

'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 ]

andaStringsListArray、の各メンバーでStringの呼び出しによって返される の になります。#asStringaList

それらすべてを 1 つの に連結したい場合は、 の代わりにコレクションStringのメソッドを使用できます。#inject:into:#collect:

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

あなたがそれを印刷すれば、あなたが望むものを手に入れることができます'ab efghij lmnopqrst ':)

于 2013-01-25T06:13:34.873 に答える