在這里,我有一個用例,將哈希轉換為字串哈希。
hash = {"make"/span> => "tata", "year" => "2006"}。
p hash.to_s
輸出:
"{"make"=> "tata", "year"=> "2006"}"
預期的輸出應該是字串哈希,而類應該是字串:
預期的輸出應該是字串哈希。
"{"/span>make"=> "tata", "year"=>"2006"}"
uj5u.com熱心網友回復:
正如其他人所評論的,你實際上得到了你所尋找的只是使用to_s。當你p字串時,你看到的是inspect表示,如果字串本身,一個當被放在一個代碼檔案中的字串將是你的原始字串。
如果你想額外證明這個字串是你想要的,只需對產生的字串進行評估:
string = {"a"/span> => "b"/span>}.to_s
=> "{"a"=> "b"}"。
重建=評估字串
=> {"a" => "b"}重建。
rebuilt.class; class。
=> Hash
rebuilt.key[0].class; Hash
=>字串
rebuilt.values[0].class => String.
=>字串
uj5u.com熱心網友回復:
正如@Sergio Tulentsev所說,使用p或inspect是更干凈& 更簡單的解決方案。
hash = {"make"/span> => "tata", "year" => "2006"}。
p hash
# => {"make"=> "tata", "year"=> "2006"}
放置hash.expect
# => {"make"=> "tata", "year"=> "2006"}
如果你想重新發明輪子,見下文
。如果你不介意用單引號而不是雙引號的話:
hash = {"make"/span> => "tata", "year" => "2006"}。
def hash_to_string(hash)
inner_string = hash.map do |key, value|
"'#{key}' => '#{value}'"/span>
end.join(' , ')
'{' inner_string '}'。
end
# If you prefer overwriting Hash#to_s method
class Hash
def to_s
inner_string = self.map do |key, value|>
"'#{key}' => '#{value}'"/span>
end.join(', ' )
'{' inner_string '}'。
end
end end
把hash_to_string hash
# => {'make' => 'tata', 'year' => '2006'}
把hash.to_s
# => {'make' => 'tata', 'year' => '2006'}
p hash_to_string hash
# => "{'make' => 'tata', 'year' => '2006'}"
p hash.to_s
# => "{'make' => 'tata', 'year' => '2006'}"
盡管當你使用puts時,"被轉義,因為String本身被雙引號所包圍。Ruby使用雙引號來表示字串
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/307622.html
標籤:
