teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

fix

2017/07/10 09:32

投稿

mattn
mattn

スコア5030

answer CHANGED
@@ -15,7 +15,7 @@
15
15
  return i
16
16
  else
17
17
  return j
18
- endif
18
+ end
19
19
  ```
20
20
 
21
21
  と同じ意味になります。さて inject の仕様を見ると

1

fix

2017/07/10 09:32

投稿

mattn
mattn

スコア5030

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) が返ります。その 80 と 49 で次のブロックが実行され、89 の方が大きいので j(89) が返ります。もうお気付きだと思いますが、これは2項を得て大きい方の数値を返す関数で、つまりは配列の中から一番大きい値を返す処理になるのです。
25
+ となっています。この「ブロックの前回の戻り値」がミソで、例えば配列の先頭2つ 3 と 89 を渡すと、`i > j ? i : j` は 89 の方が大きいので偽、つまり j(89) が返ります。その 89 と 49 で次のブロックが実行され、89 の方が大きいので j(89) が返ります。もうお気付きだと思いますが、これは2項を得て大きい方の数値を返す関数で、つまりは配列の中から一番大きい値を返す処理になるのです。