Ruby Chris Pine Tut积木和过程
我了解以下代码中发生的一切,但输出时的Ruby Chris Pine Tut积木和过程,ruby,Ruby,我了解以下代码中发生的一切,但输出时的部分除外: 1 def doUntilFalse firstInput, someProc 2 input = firstInput 3 output = firstInput 4 5 while output 6 input = output 7 output = someProc.call input 8 end 9 10 input 11 end 12 13 buildArrayOfSquares = Proc.ne
部分除外:
1 def doUntilFalse firstInput, someProc
2 input = firstInput
3 output = firstInput
4
5 while output
6 input = output
7 output = someProc.call input
8 end
9
10 input
11 end
12
13 buildArrayOfSquares = Proc.new do |array|
14 lastNumber = array.last
15 if lastNumber <= 0
16 false
17 else
18 array.pop # Take off the last number...
19 array.push lastNumber*lastNumber # ...and replace it with its square...
20 array.push lastNumber-1 # ...followed by the next smaller number.
21 end
22 end
23
24 alwaysFalse = Proc.new do |justIgnoreMe|
25 false
26 end
27
28 puts doUntilFalse([5], buildArrayOfSquares).inspect
1 def duantilfalse firstInput,someProc
2输入=第一输入
3输出=第一输入
4.
5当输出
6输入=输出
7输出=someProc.call输入
8结束
9
10输入
11完
12
13 buildArrayOfSquares=Proc.new do |数组|
14 lastNumber=array.last
15如果lastNumber输出
将成为过程someProc
的返回值,该返回值作为参数在第28行传递,如buildArrayOfSquares
。在特定情况下,这反过来将返回false
;发生这种情况时,while
循环将终止
具体来说,firstInput
是[5]
,它成为第一个输入。我们用[5]
调用buildArrayOfSquares
。由于5
不是,输出将成为过程someProc
的返回值,该返回值又作为参数传递到第28行,如buildArrayOfSquares
。在特定情况下,这反过来将返回false
;发生这种情况时,while
循环将终止
具体来说,firstInput
是[5]
,它成为第一个输入。我们用[5]
调用buildArrayOfSquares
。因为5
不是,这就是我所说的全面答案,谢谢。为了继续树/森林的比喻,你只是拿了一把电锯。这就是我所说的全面答案,谢谢。要继续树/森林的比喻,您只需使用电锯即可。