2010-11-23 27 views
8

例如,我想轉成"hello"list(104, 101, 108, 108, 111)list("h", "e", "l", "l", "o")如何將字符串轉換爲Io中的列表?

到目前爲止,我已經創建了一個空的列表,使用foreach和每一個項目追加到列表自己,但是這不是真的做了簡明的方法它。

+0

你** **真的不想知道你有什麼要經過一個字符串轉換爲在一個列表HEL-語言。 ;-) – 2010-11-23 10:37:58

+0

大聲笑..如果我曾經創建一個相當嚴肅的編程語言,我保證將其命名爲Hel :) – Jakob 2010-11-23 10:44:04

+0

偏離主題,但與Io有關的問題在這裏。我回滾了你最近做過的標記編輯,因爲`iolanguage`是Io的標準標記。 – draegtun 2010-11-23 12:30:26

回答

2

一種方法是使用正則表達式插件:

#!/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 
5

我自己的建議:

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

沒有測試它的性能,明智的,但避免了正則表達式應該考慮的東西。

3

另一個很好的簡潔,但仍不幸比foreach解決慢是:

Sequence asList := method (
    Range 0 to(self size - 1) map (v, self at(v) asCharacter) 
)