A investigative report of refinements

Post on 26-May-2015

113 Views

Category:

Documents

6 Downloads

Preview:

Click to see full reader

DESCRIPTION

RubyHiroba 2014 で発表した、Refinements についての LT 資料です

Transcript

yancya�には�Refinements�が

わからぬ

yancya�には�Refinements�が

わからぬA�investigative�report�of�

refinements��

yancyaRubyHiroba�20142014/09/21

Powered�by�Rabbit�2.1.3�and�COZMIXNG

自⼰紹介

@yancya

何者でも無い1⼈の Rubyist

オープンクラス

特徴的な�Ruby�の機能

���������������������������������������������������������������������������������������������������������������

オープンクラス

������������������������������������������������������������

��������������������������������������������������������

���������������������������������������������������������������

�����������������������������������������������������������

オープンクラス

こんなモンキーパッチばかりしていると、プログラマがクラスを信じられなくなってしまうぞ

オープンクラス

こんなモンキーパッチばかりしていると、プログラマがクラスを信じられなくなってしまうぞ

yancya�は「気をつける」のが苦⼿だろ

Refinements

スコープを限定してモンキーパッチする仕組みがあるんだぞ

����������������������������������������������������������������������������������������������

�����������������������������������������

Refinements

using�以降の、同⼀ファイル内のコードにのみ、影響するんだ

������������������������������������������

������������������������������������������������������������

���������������������������������������������������������������

⾊々試してみよう

��������������

����������������������������������������������������������������

������������������������������������������������������������������������������������������������������������������������

そ、そんなはずは

��������������

������������������������������

����������������������������������������������������������������

何が悪いのか

&:symbol�って、:symbol.to̲proc.call(arg)�と同じだったような

to̲proc,�send

やはり...

��������������

������������������������������������������������������

����������������������������������������������������������������

気をつける

メソッドが、どこのスコープで実⾏されるのか、きちんと気をつけないとダメ

send�などのメタプログラミングメソッドを使うと、スコープがファイル外へすっ⾶んでいってしまうことがあるので

結論

yancya�に�Refinements�は、まだ早すぎる

気をつけなくてもキチンと書けるようになるか、そういう仕組みを作るしかない

もうちょっと勉強してから出直してこよう

Powered�by�Rabbit�2.1.3�and�COZMIXNG

top related