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

Ruby:为什么while和直到不返回它们从函数执行的最后一行?

发布时间:2020-12-17 03:17:43 所属栏目:百科 来源:网络整理
导读:我希望while循环返回它执行的最后一个语句,但是函数似乎没有返回. (1)这似乎有效.. [10] pry(main) counter = 0= 0[11] pry(main) a = counter+=1 while counter 10= nil[12] pry(main) a= 10 (2)这不符合我的预期.我希望将10返回并存储到b中. [19] pry(main
我希望while循环返回它执行的最后一个语句,但是函数似乎没有返回.

(1)这似乎有效..

[10] pry(main)> counter = 0
=> 0
[11] pry(main)> a = counter+=1 while counter < 10
=> nil
[12] pry(main)> a
=> 10

(2)这不符合我的预期.我希望将10返回并存储到b中.

[19] pry(main)> def increment(terminal_value)
[19] pry(main)*   counter = 0  
[19] pry(main)*   while counter < terminal_value
[19] pry(main)*     counter+=1
[19] pry(main)*   end  
[19] pry(main)* end  
=> :increment
[20] pry(main)> b = increment(10)
=> nil
[21] pry(main)> b
=> nil

问题:

>为什么在(1)中从赋值语句返回nil?
>为什么不分配10?

更新:

正如@DaveNewton所提到的,在(1)中,我以为我在做:

a = (counter +=1 while counter < 10)

但我其实在做:

(a = counter +=1) while counter < 10

解决方法

在两个示例中,while循环结果为nil.

while loop开始:

The result of a while loop is nil unless break is used to supply a value.

until也是如此:

Like a while loop the result of an until loop is nil unless break is used.

(编辑:李大同)

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

    推荐文章
      热点阅读