9

s は文字列です。これは非常に長文のようです。これを単純化するにはどうすればよいですか? :

   if x === 2
      z = s
    elsif x === 3
      z = s+s
    elsif x === 4
      z = s+s+s
    elsif x === 5
      z = s+s+s+s
    elsif x === 6
      z = s+s+s+s+s

ありがとう

4

4 に答える 4

24

このようなものが最もシンプルで機能します ( ideone.com で見られるように):

puts 'Hello' * 3   # HelloHelloHello
 
s = 'Go'
x = 4
z = s * (x - 1)
puts z             # GoGoGo

API リンク

ruby-doc.org -String :str * integer => new_str

Copy—受信者の新しいString包含整数コピーを返します。

"Ho! " * 3   #=> "Ho! Ho! Ho! "
于 2010-07-05T11:45:55.507 に答える
2
z=''
(x-1).times do
 z+=s
end
于 2010-07-05T11:29:12.717 に答える
1

たとえば、5 つ星までの評価システムの場合、次のようなものを使用できます。

def rating_to_star(rating)
   'star' * rating.to_i + 'empty_star' * (5 - rating.to_i)
end
于 2014-06-12T14:23:32.537 に答える
1

疑似コード (ルビではない)

if 1 < int(x) < 7  then
   z = (x-1)*s
于 2010-07-05T11:32:36.750 に答える