此代码将生成一个正整数梯形图:
puts "Enter an integer"
n = gets
def pattern(n)
2.step(n, 2).map {|x| x.to_s * x}.join("\n")
end
我一直在努力弄清to_s
对代码的作用。
答案 0 :(得分:0)
它将fixnum转换为字符串。这是特别必要的,因为它后跟* x
操作,后者乘以一个字符串。如果未应用to_s
,那么* x
将会算术地乘以fixnum。
答案 1 :(得分:0)
需要x.to_s
以便调用字符串的*
方法,而不是整数的*
方法。
> i = 2
=> 2
> i * 2
=> 4
> s = '2'
=> "2"
> s * 2
=> "22"