回答編集履歴
2
fix
answer
CHANGED
@@ -15,7 +15,7 @@
|
|
15
15
|
return i
|
16
16
|
else
|
17
17
|
return j
|
18
|
-
|
18
|
+
end
|
19
19
|
```
|
20
20
|
|
21
21
|
と同じ意味になります。さて inject の仕様を見ると
|
1
fix
answer
CHANGED
@@ -22,4 +22,4 @@
|
|
22
22
|
|
23
23
|
> injectメソッドは、ブロックを使って繰り返し計算を行うのに使います。ブロックに順に「要素1、要素2」、「ブロックの前回の戻り値、要素3」、「ブロックの前回の戻り値、要素4」、...を渡します。メソッドの戻り値はブロックが最後に返した値になります。
|
24
24
|
|
25
|
-
となっています。この「ブロックの前回の戻り値」がミソで、例えば配列の先頭2つ 3 と 89 を渡すと、`i > j ? i : j` は 89 の方が大きいので偽、つまり j(89) が返ります。その
|
25
|
+
となっています。この「ブロックの前回の戻り値」がミソで、例えば配列の先頭2つ 3 と 89 を渡すと、`i > j ? i : j` は 89 の方が大きいので偽、つまり j(89) が返ります。その 89 と 49 で次のブロックが実行され、89 の方が大きいので j(89) が返ります。もうお気付きだと思いますが、これは2項を得て大きい方の数値を返す関数で、つまりは配列の中から一番大きい値を返す処理になるのです。
|