8

たとえば、私はまたはになり"hello"たいlist(104, 101, 108, 108, 111)ですlist("h", "e", "l", "l", "o")

これまでのところ、空のリストを作成し、foreachすべての項目を自分で使用してリストに追加しましたが、それは実際には簡潔な方法ではありません。

4

4 に答える 4

5

私自身の提案:

Sequence asList := method(
  result := list()
  self foreach(x,
    result append(x)
  )
)

パフォーマンスに関してはテストしていませんが、正規表現を避けることで何かが説明できるはずです。

于 2010-11-23T13:02:53.677 に答える
4

別の非常に簡潔ですが、残念ながらforeachソリューションよりも遅いのは次のとおりです。

Sequence asList := method (
    Range 0 to(self size - 1) map (v, self at(v) asCharacter)
)
于 2011-02-17T23:15:36.000 に答える
2

1 つの方法は、Regex アドオンを使用することです。

#!/usr/bin/env io

Regex

myList := "hello" allMatchesOfRegex(".") map (at(0))

しかし、他の (そしておそらくもっと良い!) 方法があるはずです。


更新- re: 問題の私のコメント。Sequence オブジェクトに何かを組み込むとよいでしょう。例:

Sequence asList := method (
    Regex
    self allMatchesOfRegex(".") map (at(0))
)

# now its just
myList := "hello" asList
于 2010-11-23T12:25:16.613 に答える