2012-03-13 4 views
0

다음 코드는 수레의 배열에 문자열 배열을 변환 :Ruby에서 배열 배열을 문자열에서 부동으로 변환하는 방법은 무엇입니까?

a = ["4", "5.5", "6"] 
a.collect do |value| 
    value.to_f 
end 
=> [4.0, 5.5, 6.0] 

이유는 무엇입니까 문자열 대신 수레의 배열을 반환 다음?

b = [ ["0.0034", "-0.0244", "0.0213", "-0.099"], 
     ["0.0947", "-0.1231", "-0.1363", "0.0501"], 
     ["-0.0368", "-0.1769", "-0.0327", "-0.113"], 
     ["0.0936", "-0.0987", "-0.0971", "0.1156"], 
     ["0.0029", "-0.1109", "-0.1226", "-0.0133"] ] 

b.each do |row| 
    row.collect do |value| 
     value.to_f 
    end 
end 
=> [["0.0034", "-0.0244", "0.0213", "-0.099"], ["0.0947", "-0.1231", "-0.1363", "0.0501"], ["-0.0368", "-0.1769", "-0.0327", "-0.113"], ["0.0936", "-0.0987", "-0.0971", "0.1156"], ["0.0029", "-0.1109", "-0.1226", "-0.0133"]] 

또한이 방법이 더 좋습니까?

답변

11

collect 대신 eachb으로 호출하기 때문에 새로 생성 된 배열 대신 원래의 배열이 반환됩니다. 여기에 (I 수집지도를 선호하지만, 그건 그냥 나야) 올바른 코드입니다 :

b.map{ |arr| arr.map{ |v| v.to_f } } 
+0

.... –

+7

는'arr.map가 (: to_f가)'조금 짧은 –

관련 문제