У меня есть двумерный массив вида:Как заменить все значения в двумерном массиве в Рубине
[true,false,false]
[false,true,false]
[false,false,true]
Я хотел бы заменить все истинное (BOOL) значения с 'истина' (строка) и все ложные с 'ложь'
У меня есть двумерный массив вида:Как заменить все значения в двумерном массиве в Рубине
[true,false,false]
[false,true,false]
[false,false,true]
Я хотел бы заменить все истинное (BOOL) значения с 'истина' (строка) и все ложные с 'ложь'
Предполагая, что у вас есть массив массивов:
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"]]
Да, сделайте, как показано ниже, используя 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) }
@Agis Это не способ дублировать ваш .. –
+1. это лучший/поточно-безопасный подход. –
Небезопасный. Ответ Арупа с использованием карты дважды был лучше. Голосование, чтобы восстановить его ... –
@Denis Безопасность потока не требовалась в OP. «Массив» в МРТ также не является потокобезопасным. – Agis
@Denis Вы не можете на самом деле * знать * лучший ответ, так как вы не знаете точных требований *. Вы делаете предположение, что проблема безопасности потоков является проблемой, хотя OP ничего не говорит об этом. – Agis