Submit Search
Ruby enumerable source code reading
Download as pptx, pdf
5 likes
1,553 views
do_aki
20120811 るりま読書会 Enumerable編
Read more
1 of 27
Download now
Download to read offline
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
More Related Content
Similar to Ruby enumerable source code reading
(20)
ODP
Rubyのソースコードを読んでみよう(入門編)
baban ba-n
PDF
怠惰なRubyistへの道 fukuoka rubykaigi01
nagachika t
PDF
Ruby初級者向けレッスン 56回 ─── ブロック
higaki
PDF
Enumerable lazy について
Tomoya Kawanishi
PDF
Ruby
Shintaro Abe
PDF
怠惰なRubyistへの道
nagachika t
PPTX
Ruby講座第二回
mitsunaga
PDF
フィボナッチ数列の作り方
Tomoya Kawanishi
PDF
Evolution Of Enumerator
Akinori Musha
ODP
Rubyのコードを読んでみよう(オブジェクト編)
baban ba-n
PDF
Tottoruby 20130119
Takashi SAKAGUCHI
PDF
Ruby初級者向けレッスン 50回 ─── ブロック
higaki
PDF
Ruby初級者向けレッスン KOF2015 出張版
higaki
KEY
Enumerable な何か、あるいは怠惰なる反復
Tadashi Sawada
PDF
Ruby でつくる型付き Ruby
mametter
PDF
Fukushima.rb#00
xibbar
PDF
Ruby 同好会宣言
Yuya Takeyama
PPTX
第3回輪講
mh_amako
PDF
Rubyist生活に欠かせないブロック構文の話
Kohei Taniguchi
PDF
RubyKaigi2014: Just in Time compiler for CRuby
imasahiro
Rubyのソースコードを読んでみよう(入門編)
baban ba-n
怠惰なRubyistへの道 fukuoka rubykaigi01
nagachika t
Ruby初級者向けレッスン 56回 ─── ブロック
higaki
Enumerable lazy について
Tomoya Kawanishi
Ruby
Shintaro Abe
怠惰なRubyistへの道
nagachika t
Ruby講座第二回
mitsunaga
フィボナッチ数列の作り方
Tomoya Kawanishi
Evolution Of Enumerator
Akinori Musha
Rubyのコードを読んでみよう(オブジェクト編)
baban ba-n
Tottoruby 20130119
Takashi SAKAGUCHI
Ruby初級者向けレッスン 50回 ─── ブロック
higaki
Ruby初級者向けレッスン KOF2015 出張版
higaki
Enumerable な何か、あるいは怠惰なる反復
Tadashi Sawada
Ruby でつくる型付き Ruby
mametter
Fukushima.rb#00
xibbar
Ruby 同好会宣言
Yuya Takeyama
第3回輪講
mh_amako
Rubyist生活に欠かせないブロック構文の話
Kohei Taniguchi
RubyKaigi2014: Just in Time compiler for CRuby
imasahiro
More from do_aki
(20)
PPTX
Tritonn から Elasticsearch への移行話
do_aki
PPTX
php-src の歩き方
do_aki
PPTX
PHP と SAPI と ZendEngine3 と
do_aki
PPTX
PHPとシグナル、その裏側
do_aki
PPTX
再考:列挙型
do_aki
PPTX
signal の話 或いは Zend Signals とは何か
do_aki
PPTX
PHP AST 徹底解説(補遺)
do_aki
PPTX
PHP AST 徹底解説
do_aki
PPTX
Writing php extensions in golang
do_aki
PPTX
php7's ast
do_aki
PPTX
N対1 レプリケーション + Optimizer Hint
do_aki
PPTX
20150212 プレゼンテーションzen
do_aki
PPTX
MySQL Casual Talks 7 「N:1 レプリケーション ~進捗どうですか?~」
do_aki
PPTX
20141017 introduce razor
do_aki
PPTX
20141011 mastering mysqlnd
do_aki
PPTX
php in ruby
do_aki
PPTX
PHP から Groonga を使うにはこんなコードになるよ!
do_aki
PPTX
N:1 Replication meets MHA
do_aki
PDF
Php radomize
do_aki
PPTX
php and sapi and zendengine2 and...
do_aki
Tritonn から Elasticsearch への移行話
do_aki
php-src の歩き方
do_aki
PHP と SAPI と ZendEngine3 と
do_aki
PHPとシグナル、その裏側
do_aki
再考:列挙型
do_aki
signal の話 或いは Zend Signals とは何か
do_aki
PHP AST 徹底解説(補遺)
do_aki
PHP AST 徹底解説
do_aki
Writing php extensions in golang
do_aki
php7's ast
do_aki
N対1 レプリケーション + Optimizer Hint
do_aki
20150212 プレゼンテーションzen
do_aki
MySQL Casual Talks 7 「N:1 レプリケーション ~進捗どうですか?~」
do_aki
20141017 introduce razor
do_aki
20141011 mastering mysqlnd
do_aki
php in ruby
do_aki
PHP から Groonga を使うにはこんなコードになるよ!
do_aki
N:1 Replication meets MHA
do_aki
Php radomize
do_aki
php and sapi and zendengine2 and...
do_aki
Ad
Ruby enumerable source code reading
1.
Ruby enumerable
source code reading 2012/08/11 るりま読書会 Enumerator編 do_aki
2.
@do_aki http://do-aki.net/
3.
PHPer I’m a PHPer
7.
新たにプログラミング言語 を学ぶ時の効果的な方法
8.
Code Reading
9.
Ruby のコード読んでやんよ (`・ω・´)
12.
Ruby 言語仕様 組み込みライブラリ
直下の *.c 標準添付ライブラリ ext/lib 以下
13.
Array
=> array.c Hash => hash.c Enumerable => enum.c Enumerator => enumerator.c
14.
void Init_Array(void)
array.c { rb_cArray = rb_define_class("Array", rb_cObject); rb_include_module(rb_cArray, rb_mEnumerable); rb_define_alloc_func(rb_cArray, ary_alloc); rb_define_singleton_method(rb_cArray, "[]", rb_ary_s_create, -1); rb_define_singleton_method(rb_cArray, "try_convert", rb_ary_s_try_convert, 1); rb_define_method(rb_cArray, "initialize", rb_ary_initialize, -1); rb_define_method(rb_cArray, "initialize_copy", rb_ary_replace, 1); rb_define_method(rb_cArray, "inspect", rb_ary_inspect, 0); rb_define_alias(rb_cArray, "to_s", "inspect"); rb_define_method(rb_cArray, "to_a", rb_ary_to_a, 0); rb_define_method(rb_cArray, "to_ary", rb_ary_to_ary_m, 0); rb_define_method(rb_cArray, "frozen?", rb_ary_frozen_p, 0); 以下 rb_define_method が続く
15.
array.c
=> VALUE rb_cArray; hash.c => VALUE rb_cHash; enum.c => VALUE rb_mEnumerable; enumerator.c => VALUE rb_cEnumerator; VALUE rb_eStopIteration;
16.
Enumerable を継承してるクラス
17.
void Init_Array(void)
array.c { rb_cArray = rb_define_class("Array", rb_cObject); rb_include_module(rb_cArray, rb_mEnumerable); rb_define_alloc_func(rb_cArray, ary_alloc); rb_define_singleton_method(rb_cArray, "[]", rb_ary_s_create, -1); rb_define_singleton_method(rb_cArray, "try_convert", rb_ary_s_try_convert, 1); rb_define_method(rb_cArray, "initialize", rb_ary_initialize, -1); rb_define_method(rb_cArray, "initialize_copy", rb_ary_replace, 1); rb_define_method(rb_cArray, "inspect", rb_ary_inspect, 0); rb_define_alias(rb_cArray, "to_s", "inspect"); rb_define_method(rb_cArray, "to_a", rb_ary_to_a, 0); rb_define_method(rb_cArray, "to_ary", rb_ary_to_ary_m, 0); rb_define_method(rb_cArray, "frozen?", rb_ary_frozen_p, 0); 以下 rb_define_method が続く
18.
るりまに載っていない 隠しメソッドがあるのでは!?
19.
んなもんあるわきゃない (´・ω・`)
けど、ちょっとだけキニナルものを発見
20.
Enumerator::Yielder new {|y| ...
} -> Enumerator Enumerator オブジェクトを生成して返しま す。与えられたブロックは Enumerator::Yielder オブジェクトを 引数として実行されます。 生成された Enumerator オブジェクトに対して each を呼ぶと、この生成時に指定されたブ ロックを 実行し、Yielder オブジェクトに対し て << メソッドが呼ばれるたびに、 each に渡 されたブロックが繰り返されます。 new に渡されたブロックが終了した時点で each の繰り返しが終わります。 このときのブ ロックの返り値が each の返り値となります。
21.
Enumerator::Yielder sample enum =
Enumerator.new do |yielder| (1..3).each do |i| yielder << i end end enum.each{|i| p i} # => 1 2 3
22.
Enumerator::Yielder sample enum =
Enumerator.new do |yielder| (1..3).each do |i| yielder.yield i end end enum.each{|i| p i} # => 1 2 3
23.
経緯 ドキュメント無いから書くよ 現在の実装は実験的なもの 明文化すると容易に変え難い Yieldable module という案は? そこまでする必要なくね? じゃぁいっか。
http://ruby.11.n6.nabble.com/ruby-dev-39660-Bug-trunk- Enumerator-new-y-y-lt-lt-1-lt-lt-2-lt-lt-3-td3535850.html
24.
よーわからん てか、そのへんドキュメントに書いとけよ
25.
時間切れ的まとめ的な何か • 処理系読んでみると面白いよ • コード自体は
ruby script っぽい感じ => ruby に慣れた人は読みやすいハズ • より深く ruby を知ることができる
26.
ありがとうございました
27.
Question?
Download