2

感谢您花时间审查我的简单问题,或许还可以提出建议。我正在为我正在做的一个练习寻找一个解决方案。

我想知道如何写这个数组的内容:

@points = [1, 2, 3, 4]

到这个字符串:

saved_points1  = "SAVED_POINTS2 = [%s]" % [@points]

这样在打印 saved_points1 时,它会打印:

"SAVED_POINTS2 = [1, 2, 3, 4]"

现在,我在打印时看到了这个:

"SAVED_POINTS2 = [1234]"

我有一种感觉,也许这可能是一个红宝石版本的问题。我在 1.8.7。也许如果我在 1.9.x 上,数组会按预期打印?或者是否有不同/更好的方法来保存、读取和打印此操作?

如果它有所作为,SAVED_POINTS2 位于我在实例化时需要的模块中。我正在使用该模块中的变量来加载/保存我的新类(@points 所在的类)的值。我敢打赌这不是保存状态的正确方法,但这是我目前对 ruby​​ 理解水平所知道的唯一方法。所以,我不一定要寻找更好的保存状态方法的建议,因为我想确保我首先了解如何正确读取/写入这些数组。但如果你有你认为我会理解的建议,我很想听听。

4

2 回答 2

6

Array#to_s在 ruby​​ 1.8 和 1.9 中确实有不同的行为。有一种通用的方法可以获取您想要的字符串。Array 有一个join方法可以用分隔符连接数组的所有元素。您的分隔符将是一个字符串', '

@points = [1, 2, 3, 4]

s = "SAVED_POINTS2 = [#{@points.join(', ')}]"

s # => "SAVED_POINTS2 = [1, 2, 3, 4]"
于 2013-06-07T15:41:55.767 回答
2

如果您使用该方法inspect,它将在所有 ruby​​ 版本中运行良好:

"SAVED_POINTS2 = %s" % @points.inspect
 # => "SAVED_POINTS2 = [1, 2, 3, 4]"
于 2013-06-07T16:27:47.690 回答