2010-05-18 37 views
2

我想在紅寶石中製作一個多維數組的字符,這個工程,但有沒有更優雅的方式?更優雅的方式來寫一個多維數組的字符紅寶石?

def initialize(text) 
    @map = Array.new 
    i = 0 
    text.split("\n").each do |x| 
    @map[i] = x.scan(/./) 
    i += 1 
    end 
    #@map = text 
    end#constructor 
+0

重命名我到n,增量ñ內聯? – 2010-05-18 04:14:36

回答

7
@map = text.split("\n").map{|x| x.scan(/./)} 

#looks slightly better, needs at least 1.8.7 
@map = text.lines.map{|x| x.scan(/./)} 
+0

...至少1.8.7,否則'require'backports''。另一種方式是:'text.lines.map {| x | x.chars.to_a}' – 2010-05-18 04:57:31

+0

@Marc,在結果中留下'\ n' – vava 2010-05-18 05:06:28

+0

最優秀。我知道我很冗長。 Ruby可以很優雅,但你必須知道你在做什麼! – tesserakt 2010-05-18 14:44:15

3
@map = text.lines.to_a.map { |s| s.chomp.split("") } 
+3

'Enumerable'上定義的'map' – vava 2010-05-18 04:23:40