はじめに
移植やってます。
( from python 3.7 to ruby 2.7 )
lambda (Python)
_identity = lambda x, **kw: x
いわゆる無名関数ですね。
lambda (Ruby)
_identity = ->(x, **kw) { x }
# or
_identity = lambda { |x, **kw| x }
lambda
とProc
の違いの一つに引数の数が違っている場合があげられますが、可変長引数を使用するとエラーにならない様です。
identity2 = ->(x, **kw) { x }
puts identity2.call(2)
# 2
identity1 = ->(x, kw) { x }
puts identity1.call(1)
main.rb:5:in `block in <main>': wrong number of arguments (given 1, expected 2) (ArgumentError)
メモ
- Python の lambda を学習した
- 道のりは遠そう