我有一个数组:[1, "2", 3.0, ["a", "b"], "dog"]
在我的命令提示符中输入array.to_s
给我这个:
[1, \"2\", 3.0, [\"a\", \"b\"], \"dog\"]
哪个是错的,并且假设给我这个:
123.0abdog
有人会向我解释为什么我没有得到正确的结果吗?
答案 0 :(得分:3)
你可能想加入数组:
[1, "2", 3.0, ["a", "b"], "dog"].join
=> "123.0abdog"
to_s
的工作方式不同,根据docs,它会创建数组的字符串表示形式:
[ "a", "b", "c" ].to_s #=> "[\"a\", \"b\", \"c\"]"
答案 1 :(得分:3)
它给你的是正确的结果。 .to_s
只返回您调用它的对象的字符串表示形式。在这种情况下,它返回表示为字符串时数组的外观。这并不仅仅意味着扁平化并将所有元素组合成一个字符串,通常并不意味着这样。
如果您想运行一些代码来获得该结果,请尝试:
[1, "2", 3.0, ["a", "b"], "dog"].flatten.join
答案 2 :(得分:0)
首先需要使用flatten去除嵌套数组bby。然后你可以把它加入一个字符串。
[1, "2", 3.0, ["a", "b"], "dog"].flatten.join