この記事を読んで自分なりにわからないところをまとめながら理解していく
##ディスパッチテーブル
ディスパッチテーブル(キーと関数・メソッドの対応表)などを使って次の処理(関数)などを呼び出すこと
##productメソッド
tx = %w(1 2 3 4 5)
ty = %w(a b c d e)
for point in tx.product(ty)
p(point)
end
このように使われていたのでproductメソッドを検索
->検索結果は以下
dish1 = ["チキン", "ポーク", "マトン"]
dish2 = ["パン", "ライス"]
sets = dish1.product(dish2).collect {|set| set.join("+") }
puts sets.join(" ")
-> チキン+パン チキン+ライス ポーク+パン ポーク+ライス マトン+パン マトン+ライス
引数に複数の配列を指定することも可能
->次にcollectメソッドってなに
##collectメソッド
要素の数だけ繰り返しブロックを実行し、ブロックの戻り値を集めた配列を作成して返す
書き方
array.collect {|item| block }
例(文字列を16進数に直す)
numbers = ["68", "65", "6C", "6C", "6F"]
p numbers.collect {|item| item.to_i(16) }
返り値
[104, 101, 108, 108, 111]
###さらに進めて・・・
今度はこのコードがわからない
for point in tx.lazy.flat_map{|x| ty.lazy.map{|y|[x,y]} }
p(point)
end
##lazyメソッド
->参考
http://melborne.github.io/2012/07/06/enumerable-memo/
よくわからないので、もう少し調べてみようと思う。
##制御構造
->if文とかunlessとか
##データ構造
->データをコンピュータの中で扱う際にデータを格納する一定の形式のこと
もう少し調べて書くつもり
##Gofの振る舞いに関するデザインパターン
詳しく勉強する必要がありそう…
##クロージャ
自分を囲むスコープにある変数を参照できる関数
以下が非常に参考になった(JSだとすごいわかりやすい!)
http://qiita.com/takeharu/items/4975031faf6f7baf077a
###またさらに進めて・・・
var sum = numbers.filter(isOdd).sum();
->言語すらわからん…
##selectメソッド
.select(&method(:odd?))
条件に合う要素を探して集める。ブロック引数itemに要素を入れながらブロックを繰り返し、ブロックの戻り値が真になったときの要素を集め、新しい配列にして返す。
selectメソッド書き方
array.select {|item| block }
じゃあ&method(:odd?)
の部分は?
この記事がすごい参考になった!!
http://blog.livedoor.jp/sasata299/archives/51541958.html
##injectメソッド
.inject(:+)
http://ref.xaio.jp/ruby/classes/enumerable/inject
こちらを参考
->ようは合計を表すということだった
##感想
すごい納得したが、わからないコードがあったので勉強にもなるしよかった。
今回解決できなかった部分とかブロックとかプロックとかそこらへんをしっかり理解したい