0

以下のテキストを作成したいと思います。

"text0text1text2text3text4text5"

だから私はそれを実行しようとしましたが、実行された回数を返す.timesため、金額を保持するための補助変数が必要になります。.times

私はこのようにすることができます:

(0..5).inject(''){|a,b| a+"text#{b}"}
 => "text0text1text2text3text4text5"

しかし、このコードはもっと単純であるべきだと思います。

では、これを達成するために必要な読み取り可能な代替手段は何ですか?

4

2 に答える 2

3

0からまでの数値の範囲を指定するには、 ではなくループ5が必要になることに注意してください。6-times5

補助変数は必要ありません。

6.times do |i|
    print "text#{i}"
end

うまくいきます。このInteger#timesメソッドは、アタッチされたブロックに、ブロックが実行された回数を0ton-1回渡します。このクラスには(2.0 の時点で)メソッドFixnum さえありません。times


ありがとう。[...]。ただし、テキストを印刷するのではなく、文字列を作成したいのです。

次に、これを行う最も簡単な方法は、::newコンストラクター メソッドを使用して文字列Arrayの一時的な配列を作成し、5それらを結合することです。

string = Array.new(6) { |i| "text#{i}" }.join
于 2013-04-17T15:02:24.943 に答える
1

最良の答えは@LeeJarvisのコメントにあります

5.times.map { |x| "text#{x}" }.join
于 2013-05-14T11:45:20.863 に答える