2014-01-19 2 views

ответ

3

Предполагая, что у вас есть массив массивов:

a = [[true,false,false], [false,true,false], [false,false,true]] 
a.each { |x| x.map!(&:to_s) } 
a # => [["true", "false", "false"], ["false", "true", "false"], ["false", "false", "true"]] 
+1

Небезопасный. Ответ Арупа с использованием карты дважды был лучше. Голосование, чтобы восстановить его ... –

+1

@Denis Безопасность потока не требовалась в OP. «Массив» в МРТ также не является потокобезопасным. – Agis

+0

@Denis Вы не можете на самом деле * знать * лучший ответ, так как вы не знаете точных требований *. Вы делаете предположение, что проблема безопасности потоков является проблемой, хотя OP ничего не говорит об этом. – Agis

6

Да, сделайте, как показано ниже, используя Array#map:

a = [[true,false,false], [false,true,false], [false,false,true]] 
# you can also assign this to a new local variable instead of a, 
# if you need to use your source array object in future anywhere. 
a = a.map { |e| e.map(&:to_s) } 
+3

@Agis Это не способ дублировать ваш .. –

+3

+1. это лучший/поточно-безопасный подход. –

Смежные вопросы