2019/10/15_チェリー本(8日目)
はじめに
今日、仕事が急遽夜勤になったんですが、「こ、これだけは…」と思い、ちょっとだけ読みました。
読んだ本
本編
読んだページ数
- 第4章(P○○〜P○○) ※ kindle版を使ったので、わかんないっす…
新しく知ったこと
inject
メソッドとreduce
メソッド
- 配列の各要素に対して処理を行うが、大きな特徴として前の要素に対して行った処理の結果を次の要素の処理に引き継げる
reduce
メソッドはエイリアスメソッド
例
number = [ 1, 2, 3 ] number.inject("加藤") { |result, n| result + n.to_s } #=> "加藤123"
数列かと思いきや、人名が出来あがりました。
解説
- ブロックの第1引数には、ブロックの処理の結果が引き継がれる
- 1回目はinjectメソッドの引数("加藤") が入る
- 2回目は 1回目の処理の結果("加藤1") が入る
- ブロックの第2引数は、配列の要素が格納される。
&:
- ブロック処理は、
&:
に置き換えることができる。
例
以下の2つは同じ挙動をする
# 1 ["ddt", "sto", "stf"].map{ |ele| ele.upcase } # 2 ["ddt", "sto", "stf"].map(&:upcase) #=> ["DDT", "STO", "STF"]
解説
&:
で書き換えられる条件は以下の通り
- ブロック引数が1つだけ
- ブロック内のメソッドに引数がない
- ブロック内では、メソッドを呼び出すだけ
(複数の処理を実行できない)
(演算子はメソッドでないので不可)
あとがき
ブログの記載で例を考えるのに時間がかかっているなーと 気付き、例に使い題材を絞ったらいいんじゃないか?と思いました。
なので、今後は日本史、プロレスが多めになると思いますDDTの由来って、殺虫剤らしいです。知らなかった… DDT(プロレス技) - wikipedia)
以上