ruby – 数字上的Puts和times方法

前端之家收集整理的这篇文章主要介绍了ruby – 数字上的Puts和times方法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这段代码
puts 1.times { puts 2.times { puts 3.times { puts 4 } } }

输出

4 4 4 3 4 4 4 3 2 1

我希望Ruby能够输出times方法的返回值,但似乎并没有这样做.它打印出调用次数的数字.怎么了?

解决方法

我也没有真正得到那个输出,所以让我们从最里面的表达开始剖析它:
puts 4
# 4           <- this should denote output
#=> nil       <- this should denote return value

它打印4并返回nil(puts总是返回nil).

将它包装成3次{…}打印4次3次:

3.times { puts 4 }
# 4
# 4
# 4
#=> 3

但不是返回nil,而是返回3.这是因为times总是返回接收者(即你调用的整数时间).

现在让我们添加另一个看跌期权:

puts 3.times { puts 4 }
# 4
# 4
# 4
# 3
#=> nil

与上面相同,但也打印3次{…}的结果,即3.

在2.times {…}中包装所有内容会复制上述输出

2.times { puts 3.times { puts 4 } }
# 4
# 4
# 4
# 3
# 4
# 4
# 4
# 3
#=> 2

由于2次{…},它也返回2而不是nil.

添加put打印2:

puts 2.times { puts 3.times { puts 4 } }
# 4
# 4
# 4
# 3
# 4
# 4
# 4
# 3
# 2
#=> nil

在1.times {…}中包装它会产生相同的输出,但会将结果从nil更改为1:

1.times { puts 2.times { puts 3.times { puts 4 } } }
# 4
# 4
# 4
# 3
# 4
# 4
# 4
# 3
# 2
#=> 1

添加最后一次放置打印1:

puts 1.times { puts 2.times { puts 3.times { puts 4 } } }
# 4
# 4
# 4
# 3
# 4
# 4
# 4
# 3
# 2
# 1
#=> nil

猜你在找的Ruby相关文章