Recommended
PDF
Swift らしい表現を目指そう #eventdots
PDF
Swift 3 で新しくなったところ - 表面から見えにくいところを中心に紹介 #ISAOcorp
PDF
Swift 3 を書くときに知っておきたい API デザインガイドライン #love_swift #akibaswift
PDF
プロトコル指向 - 夢と現実の狭間 #cswift
PDF
PDF
Swift 3.0 の新機能 - 追加・変更まわりだけ、ざっくり紹介 2 #devsap
PDF
WWDC 旅行の余談と Swift Open Hours 3 - Swift ラボで聞いてきた話 #cocoa_kansai
PDF
C++コンパイラ GCCとClangからのメッセージをお読みください
PPTX
PPTX
C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~
PDF
PDF
Replace Output Iterator and Extend Range JP
PDF
PDF
ODP
PDF
Python で munin plugin を書いてみる
PDF
20170131 python3 6 PEP526
ODP
PDF
C# ドキドキ ライブ コーディング!! ~ 小島の分 ~ | BuriKaigi 2020
PDF
error handling using expected
PPTX
PDF
PDF
C++ Template Metaprogramming
PDF
PDF
PDF
PDF
Effective Modern C++ 勉強会#1 Item3,4
PDF
Effective Modern C++ Item 7&8
PDF
Ruby&Active Support for expert 3
PDF
More Related Content
PDF
Swift らしい表現を目指そう #eventdots
PDF
Swift 3 で新しくなったところ - 表面から見えにくいところを中心に紹介 #ISAOcorp
PDF
Swift 3 を書くときに知っておきたい API デザインガイドライン #love_swift #akibaswift
PDF
プロトコル指向 - 夢と現実の狭間 #cswift
PDF
PDF
Swift 3.0 の新機能 - 追加・変更まわりだけ、ざっくり紹介 2 #devsap
PDF
WWDC 旅行の余談と Swift Open Hours 3 - Swift ラボで聞いてきた話 #cocoa_kansai
PDF
C++コンパイラ GCCとClangからのメッセージをお読みください
What's hot
PPTX
PPTX
C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~
PDF
PDF
Replace Output Iterator and Extend Range JP
PDF
PDF
ODP
PDF
Python で munin plugin を書いてみる
PDF
20170131 python3 6 PEP526
ODP
PDF
C# ドキドキ ライブ コーディング!! ~ 小島の分 ~ | BuriKaigi 2020
PDF
error handling using expected
PPTX
PDF
PDF
C++ Template Metaprogramming
PDF
PDF
PDF
PDF
Effective Modern C++ 勉強会#1 Item3,4
PDF
Effective Modern C++ Item 7&8
Similar to メタプログラミングRubyはこの付録が美味しい
PDF
Ruby&Active Support for expert 3
PDF
PDF
PPT
PDF
PDF
Alluren of prototype-based OOP
PDF
PDF
PDF
Cookpad 17 day Tech internship 2017 言語処理系入門 Rubyをコンパイルしよう
PDF
PPT
PDF
PDF
PDF
PDF
PDF
アプリケーションへのRubyインタープリターの組み込み
PDF
method_missingの紹介(2013 3Qカジュアル勉強会資料)
PDF
PPT
PDF
Scrum alliance regional gathering tokyo 2013 pub
メタプログラミングRubyはこの付録が美味しい 1. メタプログラミングRubyは
この付録が美味しい
(読書会落ち穂拾い)
@suchi
hamamatsu.rb#16 LT
2012/06/13
2. 湖池屋の
ジャガッツは
このギザギザが
おいしい
http://www.youtube.com/watch?v=r1Pr8x-0ZNU
3. 4. A.4 自己yield
例: tap 電源タップと同じ。電源の取り出し。メソッドチェーン
の途中で取り出す。
class Object
def tap
yield self
self
end
end
%w(a b c).push('d').shift.upcase.next
%w(a b c).push('d').tap{|x|puts x}.shift.upcase.next
5. 6. 7. 8. 涙目で読む
1. Symbolのto_procはProcを返す(1.9ではデフォルト)
2. そのProcは1つめの引数をレシーバとして、シンボル名のメソッ
ドに残りの引数を渡して呼び出す
3. シンボルに&をつけると、Procとして扱われる(内部でto_proc
が呼び出してくれる)
4. InjectはそのProcに一つ前の返値と新しい要素の二つを渡す。
5. Injectの最初の引数(0)は最初の要素の第一引数にが使われる
6. たとえば最初は :+.to_proc.call(0, 1) が呼ばれるので0.+(1)が
呼ばれる。以下ループ
7. つまり[1,2,3].inject(0,&:+)は、
・:+.to_proc.call(:+.to_proc.call(:+.to_proc.call(0,1), 2), 3)
同じことになる
#=>8
9. 付録B ドメイン特化言語
• DSL: ドメイン特化言語
– (Domain Specific Language)
• GPL: 汎用言語
– (General Purpose Language)
• 内部DSL:
– GPL内に存在するDSL
• 外部DSL:
– 独自のパーザ。書かれた言語と無関係
• →Rubyはメタプログラミングが得意なので内
部DSLも得意ですよ
10. 11. 12. 13. 14. 湖池屋の
ジャガッツは
このギザギザが
おいしい
http://www.youtube.com/watch?v=r1Pr8x-0ZNU
15.