Enviar búsqueda
Cargar
20150928楽しいlambda
•
1 recomendación
•
1,422 vistas
Norifumi Homma
Seguir
2015/9/28にLOUPEさんと開催した勉強会用スライドです。 Lambdaの使いどころを掻い摘まんで説明しました。
Leer menos
Leer más
Tecnología
Denunciar
Compartir
Denunciar
Compartir
1 de 28
Descargar ahora
Descargar para leer sin conexión
Recomendados
Better C#の脱却を目指して
Better C#の脱却を目指して
bleis tift
モナドハンズオン前座
モナドハンズオン前座
bleis tift
Tokyo.R #19 発表資料 「Rで色々やってみました」
Tokyo.R #19 発表資料 「Rで色々やってみました」
Masayuki Isobe
2011年12月9日
2011年12月9日
nukaemon
yieldとreturnの話
yieldとreturnの話
bleis tift
研究生のためのC++ no.2
研究生のためのC++ no.2
Tomohiro Namba
Rでisomap(多様体学習のはなし)
Rでisomap(多様体学習のはなし)
Kohta Ishikawa
研究生のためのC++ no.4
研究生のためのC++ no.4
Tomohiro Namba
Recomendados
Better C#の脱却を目指して
Better C#の脱却を目指して
bleis tift
モナドハンズオン前座
モナドハンズオン前座
bleis tift
Tokyo.R #19 発表資料 「Rで色々やってみました」
Tokyo.R #19 発表資料 「Rで色々やってみました」
Masayuki Isobe
2011年12月9日
2011年12月9日
nukaemon
yieldとreturnの話
yieldとreturnの話
bleis tift
研究生のためのC++ no.2
研究生のためのC++ no.2
Tomohiro Namba
Rでisomap(多様体学習のはなし)
Rでisomap(多様体学習のはなし)
Kohta Ishikawa
研究生のためのC++ no.4
研究生のためのC++ no.4
Tomohiro Namba
研究生のためのC++ no.7
研究生のためのC++ no.7
Tomohiro Namba
plot beta dist
plot beta dist
show you
Scala 初心者が米田の補題を Scala で考えてみた
Scala 初心者が米田の補題を Scala で考えてみた
Kazuyuki TAKASE
Scalamacrosについて
Scalamacrosについて
dekosuke
会津合宿2015Day3:D問題
会津合宿2015Day3:D問題
HCPC: 北海道大学競技プログラミングサークル
ライントレースで役立った「キュー」の話し
ライントレースで役立った「キュー」の話し
noanoa07
(Ruby使いのための)Scalaで学ぶ関数型プログラミング
(Ruby使いのための)Scalaで学ぶ関数型プログラミング
Ouka Yuka
あまぁいRcpp生活
あまぁいRcpp生活
Masaki Tsuda
Qlik Tips 20220315 Null値の課題と対策
Qlik Tips 20220315 Null値の課題と対策
QlikPresalesJapan
Emcjp item33,34
Emcjp item33,34
MITSUNARI Shigeo
Ilerpg Study 006
Ilerpg Study 006
Yoshiki Ushida
並行プログラミングと継続モナド
並行プログラミングと継続モナド
Kousuke Ruichi
Rcppのすすめ
Rcppのすすめ
Masaki Tsuda
Ilerpg Study 004
Ilerpg Study 004
Yoshiki Ushida
Ilerpg Study 003
Ilerpg Study 003
Yoshiki Ushida
Startprintf_2013May18
Startprintf_2013May18
Shigekazu Takei
Fork/Join Framework。そしてLambdaへ。
Fork/Join Framework。そしてLambdaへ。
Yuichi Sakuraba
Emcjp item21
Emcjp item21
MITSUNARI Shigeo
Scheme to x86コンパイラ
Scheme to x86コンパイラ
Nobutaka Takushima
モナドをつくろう
モナドをつくろう
dico_leque
企業ロゴに学ぶ 頭を使わないスライド作り 色で悩む時間を減らそう
企業ロゴに学ぶ 頭を使わないスライド作り 色で悩む時間を減らそう
Sanae Yamashita
Rubotyに名前をつけて可愛がってかしこく育てて一緒に暮らしたい
Rubotyに名前をつけて可愛がってかしこく育てて一緒に暮らしたい
Sanae Yamashita
Más contenido relacionado
La actualidad más candente
研究生のためのC++ no.7
研究生のためのC++ no.7
Tomohiro Namba
plot beta dist
plot beta dist
show you
Scala 初心者が米田の補題を Scala で考えてみた
Scala 初心者が米田の補題を Scala で考えてみた
Kazuyuki TAKASE
Scalamacrosについて
Scalamacrosについて
dekosuke
会津合宿2015Day3:D問題
会津合宿2015Day3:D問題
HCPC: 北海道大学競技プログラミングサークル
ライントレースで役立った「キュー」の話し
ライントレースで役立った「キュー」の話し
noanoa07
(Ruby使いのための)Scalaで学ぶ関数型プログラミング
(Ruby使いのための)Scalaで学ぶ関数型プログラミング
Ouka Yuka
あまぁいRcpp生活
あまぁいRcpp生活
Masaki Tsuda
Qlik Tips 20220315 Null値の課題と対策
Qlik Tips 20220315 Null値の課題と対策
QlikPresalesJapan
Emcjp item33,34
Emcjp item33,34
MITSUNARI Shigeo
Ilerpg Study 006
Ilerpg Study 006
Yoshiki Ushida
並行プログラミングと継続モナド
並行プログラミングと継続モナド
Kousuke Ruichi
Rcppのすすめ
Rcppのすすめ
Masaki Tsuda
Ilerpg Study 004
Ilerpg Study 004
Yoshiki Ushida
Ilerpg Study 003
Ilerpg Study 003
Yoshiki Ushida
Startprintf_2013May18
Startprintf_2013May18
Shigekazu Takei
Fork/Join Framework。そしてLambdaへ。
Fork/Join Framework。そしてLambdaへ。
Yuichi Sakuraba
Emcjp item21
Emcjp item21
MITSUNARI Shigeo
Scheme to x86コンパイラ
Scheme to x86コンパイラ
Nobutaka Takushima
モナドをつくろう
モナドをつくろう
dico_leque
La actualidad más candente
(20)
研究生のためのC++ no.7
研究生のためのC++ no.7
plot beta dist
plot beta dist
Scala 初心者が米田の補題を Scala で考えてみた
Scala 初心者が米田の補題を Scala で考えてみた
Scalamacrosについて
Scalamacrosについて
会津合宿2015Day3:D問題
会津合宿2015Day3:D問題
ライントレースで役立った「キュー」の話し
ライントレースで役立った「キュー」の話し
(Ruby使いのための)Scalaで学ぶ関数型プログラミング
(Ruby使いのための)Scalaで学ぶ関数型プログラミング
あまぁいRcpp生活
あまぁいRcpp生活
Qlik Tips 20220315 Null値の課題と対策
Qlik Tips 20220315 Null値の課題と対策
Emcjp item33,34
Emcjp item33,34
Ilerpg Study 006
Ilerpg Study 006
並行プログラミングと継続モナド
並行プログラミングと継続モナド
Rcppのすすめ
Rcppのすすめ
Ilerpg Study 004
Ilerpg Study 004
Ilerpg Study 003
Ilerpg Study 003
Startprintf_2013May18
Startprintf_2013May18
Fork/Join Framework。そしてLambdaへ。
Fork/Join Framework。そしてLambdaへ。
Emcjp item21
Emcjp item21
Scheme to x86コンパイラ
Scheme to x86コンパイラ
モナドをつくろう
モナドをつくろう
Destacado
企業ロゴに学ぶ 頭を使わないスライド作り 色で悩む時間を減らそう
企業ロゴに学ぶ 頭を使わないスライド作り 色で悩む時間を減らそう
Sanae Yamashita
Rubotyに名前をつけて可愛がってかしこく育てて一緒に暮らしたい
Rubotyに名前をつけて可愛がってかしこく育てて一緒に暮らしたい
Sanae Yamashita
第2回 Framgia × LOUPE 勉強会 「Chrome Extensionいじってみた話」
第2回 Framgia × LOUPE 勉強会 「Chrome Extensionいじってみた話」
Takuya Mukohira
zsh とわたし
zsh とわたし
Toshihiko Shimokawa
LambdaとMobileの美味しいかもしれない関係
LambdaとMobileの美味しいかもしれない関係
Hiraku Komuro
20150425 JAWS-UG Okinawa
20150425 JAWS-UG Okinawa
Toshiyuki Konparu
20150226_JAWS_UG札幌
20150226_JAWS_UG札幌
美佳 松井
Lambdaについて
Lambdaについて
Ara Jo
JavaのLambdaの裏事情
JavaのLambdaの裏事情
なおき きしだ
AWS Lambda のご紹介 2015 JAWS沖縄
AWS Lambda のご紹介 2015 JAWS沖縄
Toshiaki Enami
管理統制もLambdaで!
管理統制もLambdaで!
Mamoru Ohashi
20150908 ”時間の流れ” という無限リストを扱うAWS Lambda
20150908 ”時間の流れ” という無限リストを扱うAWS Lambda
都元ダイスケ Miyamoto
はじめてのAWS Lambda
はじめてのAWS Lambda
Masaki Misawa
【東京Node学園祭2016】Node.js × Babel で AWS Lambda アプリケーションを開発する
【東京Node学園祭2016】Node.js × Babel で AWS Lambda アプリケーションを開発する
Hiroyuki Kusu
速習 AWS Lambda
速習 AWS Lambda
Masayuki Uchida
Serverlessなものを使ってサービスを作っている話
Serverlessなものを使ってサービスを作っている話
Yasuyuki Fujikawa
Lambda × Mobileの可能性
Lambda × Mobileの可能性
yuki0211s
Nodeとフロントエンド − 知っておかなければならない、今と未来の話 −
Nodeとフロントエンド − 知っておかなければならない、今と未来の話 −
Kohei Asai
AWS Lambda にまつわるおいしい話
AWS Lambda にまつわるおいしい話
美佳 松井
Cloud FormationによるBlue-Green Deployment - Dev io mtup11 003
Cloud FormationによるBlue-Green Deployment - Dev io mtup11 003
Shuji Watanabe
Destacado
(20)
企業ロゴに学ぶ 頭を使わないスライド作り 色で悩む時間を減らそう
企業ロゴに学ぶ 頭を使わないスライド作り 色で悩む時間を減らそう
Rubotyに名前をつけて可愛がってかしこく育てて一緒に暮らしたい
Rubotyに名前をつけて可愛がってかしこく育てて一緒に暮らしたい
第2回 Framgia × LOUPE 勉強会 「Chrome Extensionいじってみた話」
第2回 Framgia × LOUPE 勉強会 「Chrome Extensionいじってみた話」
zsh とわたし
zsh とわたし
LambdaとMobileの美味しいかもしれない関係
LambdaとMobileの美味しいかもしれない関係
20150425 JAWS-UG Okinawa
20150425 JAWS-UG Okinawa
20150226_JAWS_UG札幌
20150226_JAWS_UG札幌
Lambdaについて
Lambdaについて
JavaのLambdaの裏事情
JavaのLambdaの裏事情
AWS Lambda のご紹介 2015 JAWS沖縄
AWS Lambda のご紹介 2015 JAWS沖縄
管理統制もLambdaで!
管理統制もLambdaで!
20150908 ”時間の流れ” という無限リストを扱うAWS Lambda
20150908 ”時間の流れ” という無限リストを扱うAWS Lambda
はじめてのAWS Lambda
はじめてのAWS Lambda
【東京Node学園祭2016】Node.js × Babel で AWS Lambda アプリケーションを開発する
【東京Node学園祭2016】Node.js × Babel で AWS Lambda アプリケーションを開発する
速習 AWS Lambda
速習 AWS Lambda
Serverlessなものを使ってサービスを作っている話
Serverlessなものを使ってサービスを作っている話
Lambda × Mobileの可能性
Lambda × Mobileの可能性
Nodeとフロントエンド − 知っておかなければならない、今と未来の話 −
Nodeとフロントエンド − 知っておかなければならない、今と未来の話 −
AWS Lambda にまつわるおいしい話
AWS Lambda にまつわるおいしい話
Cloud FormationによるBlue-Green Deployment - Dev io mtup11 003
Cloud FormationによるBlue-Green Deployment - Dev io mtup11 003
Similar a 20150928楽しいlambda
Lisp tutorial for Pythonista : Day 1
Lisp tutorial for Pythonista : Day 1
Ransui Iso
関数型言語&形式的手法セミナー(3)
関数型言語&形式的手法セミナー(3)
啓 小笠原
Rの高速化
Rの高速化
弘毅 露崎
Introduction to NumPy & SciPy
Introduction to NumPy & SciPy
Shiqiao Du
Coq 20100208a
Coq 20100208a
tmiya
2013.07.15 はじパタlt scikit-learnで始める機械学習
2013.07.15 はじパタlt scikit-learnで始める機械学習
Motoya Wakiyama
ji-5. 繰り返し計算
ji-5. 繰り返し計算
kunihikokaneko1
Processing
Processing
Akifumi Nambu
Start!! Ruby
Start!! Ruby
mitim
タダで始めるテストファースト入門 ~ C# Express + NUnit
タダで始めるテストファースト入門 ~ C# Express + NUnit
Yasuhiko Yamamoto
第2回 JavaScriptから始めるプログラミング2016
第2回 JavaScriptから始めるプログラミング2016
kyoto university
SwiftでRiemann球面を扱う
SwiftでRiemann球面を扱う
hayato iida
フィボナッチ数列の作り方
フィボナッチ数列の作り方
Tomoya Kawanishi
プログラミング
プログラミング
saireya _
RのffでGLMしてみたけど...
RのffでGLMしてみたけど...
Kazuya Wada
2011年11月18日
2011年11月18日
nukaemon
マイクロマウスのための MATLAB/Simulink 講座 第1回 - MATLAB入門
マイクロマウスのための MATLAB/Simulink 講座 第1回 - MATLAB入門
Teng Tokoro
Lispmeetup #53 PythonベースのLisp方言、 Hyのすすめ
Lispmeetup #53 PythonベースのLisp方言、 Hyのすすめ
Satoshi imai
VBAで数値計算 03 数式実装パターン
VBAで数値計算 03 数式実装パターン
Katsuhiro Morishita
Siphone coffeemaker okayama-js-1
Siphone coffeemaker okayama-js-1
NISHIMOTO Keisuke
Similar a 20150928楽しいlambda
(20)
Lisp tutorial for Pythonista : Day 1
Lisp tutorial for Pythonista : Day 1
関数型言語&形式的手法セミナー(3)
関数型言語&形式的手法セミナー(3)
Rの高速化
Rの高速化
Introduction to NumPy & SciPy
Introduction to NumPy & SciPy
Coq 20100208a
Coq 20100208a
2013.07.15 はじパタlt scikit-learnで始める機械学習
2013.07.15 はじパタlt scikit-learnで始める機械学習
ji-5. 繰り返し計算
ji-5. 繰り返し計算
Processing
Processing
Start!! Ruby
Start!! Ruby
タダで始めるテストファースト入門 ~ C# Express + NUnit
タダで始めるテストファースト入門 ~ C# Express + NUnit
第2回 JavaScriptから始めるプログラミング2016
第2回 JavaScriptから始めるプログラミング2016
SwiftでRiemann球面を扱う
SwiftでRiemann球面を扱う
フィボナッチ数列の作り方
フィボナッチ数列の作り方
プログラミング
プログラミング
RのffでGLMしてみたけど...
RのffでGLMしてみたけど...
2011年11月18日
2011年11月18日
マイクロマウスのための MATLAB/Simulink 講座 第1回 - MATLAB入門
マイクロマウスのための MATLAB/Simulink 講座 第1回 - MATLAB入門
Lispmeetup #53 PythonベースのLisp方言、 Hyのすすめ
Lispmeetup #53 PythonベースのLisp方言、 Hyのすすめ
VBAで数値計算 03 数式実装パターン
VBAで数値計算 03 数式実装パターン
Siphone coffeemaker okayama-js-1
Siphone coffeemaker okayama-js-1
Último
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
sugiuralab
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Ryo Sasaki
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
Último
(9)
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
20150928楽しいlambda
1.
楽しいLambda 1 2015年年9⽉月28⽇日 ! 株式会社フランジア・ジャパン CTO
本間紀史
2.
提 供 2 フランジア・ジャパン
3.
3 簡単な処理理をメソッドとの対⽐比で はじめてのLambda 3
4.
4 まずはメソッドで実装 はじめてのLambda 4
5.
5 はじめてのLambda 5 実装するのはこちら 画像引⽤用元: http://manapedia.jp/text/2397
6.
6 まずは階乗から。おそらく⼀一番分かり易易い実装 def fact n (1..n).reduce
:* end ! fact 3 => 6 fact(7) => 5040 組合せの計算式をRubyで実装してみる 6 メソッドで実装しました。 1〜~与えられた引数までを順に掛け合わせて結果を返却します。
7.
7 階乗のメソッドを利利⽤用して組合せのメソッドを作成 def combination n,
r fact(n)/(fact(n-r)*fact(r)) end ! combination 5, 3 => 10 combination 10, 4 => 210 組合せの計算式をRubyで実装してみる 7 悪く無いですね。ごく普通の実装。
8.
8 nを固定して、rを変更更したい n = 10 (1...n).each{|r|puts
combination n,r} 10 45 120 210 252 210 120 45 10 組合せの計算式をRubyで実装してみる 8 毎回固定したnを指定し続ける必要があります。 →インスタンス変数で管理理する?(実は良良い⽅方法がありますが、最後の⽅方で)
9.
9 次にLambda はじめてのLambda 9
10.
10 Lambdaを使って階乗を実装する fact = ->n{(1..n).reduce
:*} => #<Proc:0x007fb528c46708@(pry):1 (lambda)> fact.call 3 => 6 fact.call 7 => 5040 組合せの計算式をRubyで実装してみる 10 Lambdaで実装しました。処理理の実装は変わりません。
11.
11 Lambdaを使って階乗を実装する #こんな書き方も fact[5] => 120 fact.(3) => 6 fact
=== 6 => 720 組合せの計算式をRubyで実装してみる 11 いずれもcallメソッドと同じ動きをします。 3番⽬目はcase式と⼀一緒に⽤用いますね。 1番⽬目の⽂文法が読み易易いと感じるので、今回はこれに統⼀一します。
12.
12 階乗のLambdaを利利⽤用して組合せのLambdaを作成 combination = ->n,
r{fact[n]/(fact[n-r]*fact[r])} => #<Proc:0x007fb528c8f480@(pry):11 (lambda)> combination[5, 3] => 10 combination[10, 4] => 210 組合せの計算式をRubyで実装してみる 12 メソッドでの実装とほぼ変わらない実装です。
13.
13 ⾼高階Lambda はじめてのLambda 13
14.
14 Lambdaを返すLambdaを実装する combination = ->n{->r{fact[n]/(fact[n-r]*fact[r])}} =>
#<Proc:0x007fb529faa588@(pry):17 (lambda)> combination[5][3] => 10 combination[10][4] => 210 組合せの計算式をRubyで実装してみる 14 呼び⽅方が変わっただけ・・・?
15.
15 Lambdaを返すLambdaを実装する c5 = combination[5] =>
#<Proc:0x007fb52a3e2038@(pry):17 (lambda)> c5[3] => 10 c10 = combination[10] => #<Proc:0x007fb52a4018c0@(pry):17 (lambda)> c10[4] => 210 組合せの計算式をRubyで実装してみる 15 nだけを束縛したLambdaを⽣生成できるようになりました。
16.
16 束縛 はじめてのLambda 16
17.
17 【再び】nを固定して、rを変更更したい n = 10 (1...n).each{|r|puts
combination n,r} 10 45 120 210 252 210 120 45 10 組合せの計算式をRubyで実装してみる 17 これをLambda版で実装すると・・・
18.
18 nを固定して、rを変更更したい c10 = combination[10] =>
#<Proc:0x007fb52a4018c0@(pry):17 (lambda)> (1...10).each{|r|puts c10[r]} 10 45 120 210 252 210 120 45 10 組合せの計算式をRubyで実装してみる 18 nだけを束縛したLambdaを⽣生成できるようになりました。
19.
19 nの値はLambdaの中に束縛されている eval "n", c10.binding =>
10 c10.binding.eval "n" => 10 Lambdaの束縛 19 bindingメソッドを利利⽤用するとその中の束縛にアクセスすることができます
20.
20 Lambdaの束縛をキャッシュとして利利⽤用する counter = ->c{->n{c
+= n}} => #<Proc:0x007fb529f02838@(pry):51 (lambda)> c1 = counter[1] => #<Proc:0x007fb529ea5070@(pry):51 (lambda)> c1[0] => 1 c1[1] => 2 c1[5] => 7 束縛を利利⽤用したキャッシュ 20 c1に束縛されているcはc1が存在する限り値を保持したまま存在します
21.
21 メソッドとLambda(みたいなの) Lambdaと仲間達 21
22.
22 class#method メソッド i =
3 => 3 i.method :+ => #<Method: Fixnum#+> i.method(:+)[5] => 8 s = "a" => "a" s.method(:succ!)[] => "b" s => "b" Methodオブジェクトに変換してLambdaのように使う 22 破壊的メソッドを呼んだらレシーバーが更更新されます
23.
23 mapの引数等に i = 3 =>
3 (1..3).map{|n| i + n} => [4, 5, 6] (1..3).map &(i.method :+) => [4, 5, 6] どんな時に使う? 23 あるオブジェクトの処理理だけを取得して、別のスコープで実⾏行行します
24.
24 【再び】nを固定して、rを変更更したい c = method(:combination).curry =>
#<Proc:0x007fa3bd5c9938 (lambda)> c10 = c[10] => #<Proc:0x007fa3bd8db6f8 (lambda)> (1...10).each{|r|puts c10[r]} 10 45 120 210 252 210 120 45 10 curry化 24 メソッドを⼀一旦Lambdaに変換して、curry化することが可能です
25.
25 動的コードとLambda もう少しLambda 25
26.
26 ゲームのアイテムを追加したときとか item = {name:
"portion", effect: "u.hp += 10"} ! class User attr_accessor :hp def use_item item eval("->u{#{item[:effect]}}")[self] end end ! user = User.new => #<User:0x007fb52a39b6b0> user.hp = 30 => 30 user.use_item item => 40 動的にコードを評価したい時のLambda 26 マスターデータにRubyのコードを格納できるので仕様変更更(追加)に強いです 本当はもうちょっと書き⽅方違う⽅方が良良いけど・・・
27.
27 まとめ はじめてのLambda 27
28.
28 結論論的な・・・ 28 Lambdaは束縛をうまく利利⽤用することで、ある状態をキープできます。 それを利利⽤用して、 ・多変量量の関数の⼀一変数を固定する
・Lambda内部にキャッシュ機構を持たせる ことができます。 ! Lambdaをコードスニペットのように扱い、ロジックを外部に持たせることがで きます。 →例例)ゲームにアイテムを追加する時にその効⽤用もDBに保存する ! メソッドの戻り値としてLambdaを返すことで、メソッドを呼ぶ側に実⾏行行タイミ ングを任せた上で、処理理内容のみを渡すことができます →ここは良良い例例が思いつかなかったので⼝口頭で・・・ とりあえず、Lambda楽しい!
Descargar ahora