to_s方法未显示正确的结果

时间:2017-01-13 20:43:57

标签: ruby

我有一个数组:[1, "2", 3.0, ["a", "b"], "dog"]

在我的命令提示符中输入array.to_s给我这个:

[1, \"2\", 3.0, [\"a\", \"b\"], \"dog\"]

哪个是错的,并且假设给我这个:

123.0abdog

有人会向我解释为什么我没有得到正确的结果吗?

3 个答案:

答案 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