I expect the while loop to return the last statement that it executes, but the function does not seem to return this.
(1) It seems to work.
[10] pry(main)> counter = 0 => 0 [11] pry(main)> a = counter+=1 while counter < 10 => nil [12] pry(main)> a => 10
(2) This does not work as I expected. I expect 10 to be returned and stored in 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
Questions:
- Why is
nil returned from the assignment operator in (1) ? - Why is
b not assigned 10 ?
Update:
As @DaveNewton noted, in (1) I thought I was doing:
a = (counter +=1 while counter < 10)
but I really did:
(a = counter +=1) while counter < 10
source share