a investigative report of refinements
DESCRIPTION
RubyHiroba 2014 で発表した、Refinements についての LT 資料ですTRANSCRIPT
![Page 1: A investigative report of refinements](https://reader034.vdocuments.mx/reader034/viewer/2022051314/55648353d8b42a361d8b4c82/html5/thumbnails/1.jpg)
yancya�には�Refinements�が
わからぬ
yancya�には�Refinements�が
わからぬA�investigative�report�of�
refinements��
yancyaRubyHiroba�20142014/09/21
Powered�by�Rabbit�2.1.3�and�COZMIXNG
![Page 2: A investigative report of refinements](https://reader034.vdocuments.mx/reader034/viewer/2022051314/55648353d8b42a361d8b4c82/html5/thumbnails/2.jpg)
自⼰紹介
@yancya
何者でも無い1⼈の Rubyist
![Page 3: A investigative report of refinements](https://reader034.vdocuments.mx/reader034/viewer/2022051314/55648353d8b42a361d8b4c82/html5/thumbnails/3.jpg)
オープンクラス
特徴的な�Ruby�の機能
���������������������������������������������������������������������������������������������������������������
![Page 4: A investigative report of refinements](https://reader034.vdocuments.mx/reader034/viewer/2022051314/55648353d8b42a361d8b4c82/html5/thumbnails/4.jpg)
オープンクラス
������������������������������������������������������������
��������������������������������������������������������
���������������������������������������������������������������
�����������������������������������������������������������
![Page 5: A investigative report of refinements](https://reader034.vdocuments.mx/reader034/viewer/2022051314/55648353d8b42a361d8b4c82/html5/thumbnails/5.jpg)
オープンクラス
こんなモンキーパッチばかりしていると、プログラマがクラスを信じられなくなってしまうぞ
![Page 6: A investigative report of refinements](https://reader034.vdocuments.mx/reader034/viewer/2022051314/55648353d8b42a361d8b4c82/html5/thumbnails/6.jpg)
オープンクラス
こんなモンキーパッチばかりしていると、プログラマがクラスを信じられなくなってしまうぞ
yancya�は「気をつける」のが苦⼿だろ
![Page 7: A investigative report of refinements](https://reader034.vdocuments.mx/reader034/viewer/2022051314/55648353d8b42a361d8b4c82/html5/thumbnails/7.jpg)
Refinements
スコープを限定してモンキーパッチする仕組みがあるんだぞ
����������������������������������������������������������������������������������������������
�����������������������������������������
![Page 8: A investigative report of refinements](https://reader034.vdocuments.mx/reader034/viewer/2022051314/55648353d8b42a361d8b4c82/html5/thumbnails/8.jpg)
Refinements
using�以降の、同⼀ファイル内のコードにのみ、影響するんだ
������������������������������������������
������������������������������������������������������������
���������������������������������������������������������������
![Page 9: A investigative report of refinements](https://reader034.vdocuments.mx/reader034/viewer/2022051314/55648353d8b42a361d8b4c82/html5/thumbnails/9.jpg)
⾊々試してみよう
��������������
����������������������������������������������������������������
������������������������������������������������������������������������������������������������������������������������
![Page 10: A investigative report of refinements](https://reader034.vdocuments.mx/reader034/viewer/2022051314/55648353d8b42a361d8b4c82/html5/thumbnails/10.jpg)
そ、そんなはずは
��������������
������������������������������
����������������������������������������������������������������
![Page 11: A investigative report of refinements](https://reader034.vdocuments.mx/reader034/viewer/2022051314/55648353d8b42a361d8b4c82/html5/thumbnails/11.jpg)
何が悪いのか
&:symbol�って、:symbol.to̲proc.call(arg)�と同じだったような
![Page 12: A investigative report of refinements](https://reader034.vdocuments.mx/reader034/viewer/2022051314/55648353d8b42a361d8b4c82/html5/thumbnails/12.jpg)
to̲proc,�send
やはり...
��������������
������������������������������������������������������
����������������������������������������������������������������
![Page 13: A investigative report of refinements](https://reader034.vdocuments.mx/reader034/viewer/2022051314/55648353d8b42a361d8b4c82/html5/thumbnails/13.jpg)
気をつける
メソッドが、どこのスコープで実⾏されるのか、きちんと気をつけないとダメ
send�などのメタプログラミングメソッドを使うと、スコープがファイル外へすっ⾶んでいってしまうことがあるので
![Page 14: A investigative report of refinements](https://reader034.vdocuments.mx/reader034/viewer/2022051314/55648353d8b42a361d8b4c82/html5/thumbnails/14.jpg)
結論
yancya�に�Refinements�は、まだ早すぎる
気をつけなくてもキチンと書けるようになるか、そういう仕組みを作るしかない
もうちょっと勉強してから出直してこよう
Powered�by�Rabbit�2.1.3�and�COZMIXNG