#ruby
Вопрос:
Здесь у меня есть подобный код ruby для преобразования массивов в строковый массив, а также я заметил, что разница между put и print/p и тем, и другим или дает разные выходные данные
a= ["ruby"]
print a.to_s
выход:
"["ruby"]"
Но нужно так, когда я использую print/p, а класс должен быть строковым
"["ruby"]" or '["ruby"]'
Комментарии:
1. Похоже, вы занимаетесь какой-то сериализацией. Зачем вам нужна такая строка? Может быть, есть лучший способ решить эту проблему.
2. мне нужен этот строковый массив для оценки в одном из моих кодов ruby
3. @Bharath : Что такое строковый массив ?
4. его ничего, кроме массива, в строковом формате. Я думаю, вам нужно посмотреть на ответ @sumak, который приведен ниже
5. @Bharath как вы оцениваете строку в своем коде?
Ответ №1:
Попробуйте это
"'#{['ruby','othersElements'].join("', '")}'"
Где», » — разделитель элементов
.join("', '")
Комментарии:
1. я становлюсь таким
'ruby', 'othersElements'
, но в твоем случае я должен стать таким"['ruby', 'othersElements']"
Ответ №2:
Тебе просто нужно to_s
. Его вывод совместим с eval
(при условии, что элементы могут быть сериализованы сами с to_s
собой):
string = ["a", "b", "c"].to_s
=> "["a", "b", "c"]"
rebuilt = eval string
=> ["a", "b", "c"]
rebuilt.class
=> Array
rebuilt[0].class
=> String
Ответ №3:
Если вы согласны с одинарными кавычками вместо двойных кавычек:
array = ['ruby', 'is', 'cool']
"['#{array.join("', '")}']"
# => "['ruby', 'is', 'cool']"
# You can then define you own method:
def puts_array(array)
puts "['#{array.join("', '")}']"
end
# Or overwrite Array#to_s method
class Array
def to_s
"['#{self.join("', '")}']"
end
end
puts_array(array)
# => "['ruby', 'is', 'cool']"
puts array.to_s
# => "['ruby', 'is', 'cool']"
Комментарии:
1. Мне нужна еще одна помощь, как то же самое сделать для
{"make" => "tata", "year" => "2006"}
ожидаемого результата хэша"{"make" => "tata", "year" => "2006"}"
2. откройте новый вопрос, и мы ответим