例如,我想"hello"
变成list(104, 101, 108, 108, 111)
或list("h", "e", "l", "l", "o")
到目前为止,我已经创建了一个空列表,我自己使用foreach
并将每个项目附加到列表中,但这并不是一个真正简洁的方法。
例如,我想"hello"
变成list(104, 101, 108, 108, 111)
或list("h", "e", "l", "l", "o")
到目前为止,我已经创建了一个空列表,我自己使用foreach
并将每个项目附加到列表中,但这并不是一个真正简洁的方法。
我自己的建议:
Sequence asList := method(
result := list()
self foreach(x,
result append(x)
)
)
尚未对其性能进行测试,但避免使用正则表达式应该可以解决问题。
另一个非常简洁但不幸的是比foreach
解决方案慢的是:
Sequence asList := method (
Range 0 to(self size - 1) map (v, self at(v) asCharacter)
)
一种方法是使用 Regex 插件:
#!/usr/bin/env io
Regex
myList := "hello" allMatchesOfRegex(".") map (at(0))
但我确信一定有其他(甚至可能更好!)方法。
更新-回复:我的评论有问题。在 Sequence 对象中内置一些东西会很好。例如:
Sequence asList := method (
Regex
self allMatchesOfRegex(".") map (at(0))
)
# now its just
myList := "hello" asList
我有Io Programming Language, v. 20110905
并且方法asList
是默认定义的,所以你可以在没有任何新定义的情况下使用它。然后您可以使用方法获取字符代码map
。
Io 20110905
Io> a := "Hello World"
==> Hello World
Io> a asList
==> list(H, e, l, l, o, , W, o, r, l, d)
Io> a asList map(at(0))
==> list(72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100)