2

時間を割いてレビューし、おそらく私の簡単な質問についてアドバイスしていただきありがとうございます。私が取り組んでいる演習の解決策を探しています。

この配列の内容を書き込む方法を知りたい:

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

この文字列に:

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

saved_points1 が出力されると、次のように出力されます。

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

現在、印刷すると次のように表示されます。

"SAVED_POINTS2 = [1234]"

おそらくこれは ruby​​ のバージョンの問題ではないかと思います。私は1.8.7を使用しています。おそらく、1.9.x を使用していた場合、配列は期待どおりに出力されるでしょうか? または、この操作を保存、読み取り、印刷する別の/より良い方法はありますか?

違いが生じる場合に備えて、SAVED_POINTS2 は、インスタンス化時に必要なモジュール内に存在します。そのモジュール内の変数を使用して、新しいクラス (@points が存在するクラス) の値をロード/保存しています。これは状態を保存する正しい方法ではないに違いありませんが、現在の Ruby の理解レベルでそれを行う方法を知っている唯一の方法です。したがって、状態を保存するためのより良い方法についてのアドバイスを必ずしも探しているわけではありません。最初にこれらの配列から適切に読み書きする方法を理解したいからです。しかし、私が理解できると思われるアドバイスがあれば、ぜひ聞きたいです。

4

2 に答える 2

6

Array#to_s実際、Ruby 1.8 と 1.9 では動作が異なります。必要な文字列を取得する普遍的な方法があります。配列にはjoin、配列のすべての要素をセパレーターで連結するメソッドがあります。区切り文字は string になります', '

@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 に答える