每当 IRB 需要显示一个对象,类似下面的一些事情就会发生:向这个对象发送 inspect 消息,然后这个对象返回自身的字符串表示。Ruby 当中所有对象默认都有对 #inspect 的合理实现,但是通过提供自己的定义,我们就可以控制如何在控制台显示对象:
>> o = Object.new
=> #<Object>
>> def o.inspect
'[my object]'
end
=> nil
>> o
=> [my object]
1.6.4 打印字符串
方法 #puts 对每个 Ruby 对象(包括 main )都可用,可以用来向标准输出打印字符串:
>> x = 128>> x = 128
=> 128
>> while x < 1000
puts "x is #{x}"
x = x * 2
end
x is 128
x is 256
x is 512
=> nil
1.6.5 可变参数方法(variadic method)
定义方法时可以使用 * 运算符,以支持数目可变的参数:
>> def join_with_commas(*words)
words.join(', ')
end
=> nil
>> join_with_commas('one', 'two', 'three')
=> "one, two, three"
一个方法定义只能有一个可变参数,而常规参数放到可变参数的前后都可以:
>> def join_with_commas(before, *words, after)
before + words.join(', ') + after
end
=> nil
>> join_with_commas('Testing: ', 'one', 'two', 'three', '.')
=> "Testing: one, two, three."
在发送消息的时候,* 运算符还可以把每一个数组元素当作单个参数处理: