加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – 数字上的Puts和times方法

发布时间:2020-12-17 04:19:59 所属栏目:百科 来源:网络整理
导读:这段代码: puts 1.times { puts 2.times { puts 3.times { puts 4 } } } 输出: 4 4 4 3 4 4 4 3 2 1 我希望Ruby能够输出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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读