久々Ruby勉強。
Methodオブジェクトとか、lambda記法とかを備忘メモ。 Commandパターンとかに使おうかなぁと。
コード例
#!/usr/bin/env ruby def add(x,y) x+y end def mul(x,y) x*y end def concat(x,y) "#{x}#{y}" end a = [ { name: "足し算", func: :add }, { name: "掛け算", func: :mul }, { name: "連結", func: :concat } ] a.each { |v| puts "#{v[:name]} -> #{method(v[:func]).call(2,3)}" } 計算 = { 足す: ->(x,y){x+y} , 掛ける: ->(x,y){x*y} , 繋げる: ->(x,y){"#{x}#{y}"} } 計算.default = ->(x,y){"未定義です"} p 計算[:足す].call(2,3) p 計算[:掛ける].call(2,3) p 計算[:繋げる].call(2,3) p 計算[:未定義].call(2,3)
出力結果
$ ./proc.rb 足し算 -> 5 掛け算 -> 6 連結 -> 23 5 6 "23" "未定義です"