gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 07:15:58 25 4
gpt4 key购买 nike

我希望 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 会从赋值语句中返回?
  • 为什么 b 没有被分配 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.

关于Ruby:为什么 while 和 until 不返回它们从函数执行的最后一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26301556/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com