9/30(水)にNTT-ATさんの会議室にてkawasaki.rb #028を開催しました。
togetterのまとめはこちら
パーフェクトRuby読書会
「4-1-8 特異メソッド」まで終えました。
4-1-6 クラスの継承
Rubyは単一継承をサポートしており、クラスを定義するときに1つだけスーパークラスを継承できます。
1
2
3
4
5
6
7
8
9
10
11
12
class Parent
def greet
puts 'Hi'
end
end
class Chile
end
Child.superclass # => Parent
child = Child.new
child.greet # => "Hi" と表示
サブクラスはスーパークラスのインスタンスメソッド、クラスメソッドを継承します。しかし、サブクラスはインスタンス変数についての情報は継承しません。
1
2
3
4
5
6
7
8
9
10
11
12
13
class Parent
def initialize
@var = 'content'
end
end
class Chlid < Parent
def initialize
end
end
p Parent.new # => #<Parent:0x007f80940a04f8 @var="content">
p Child.new # => #<Child:0x007f80940987f8 @var="content">
また、定数も引き継ぎます。
1
2
3
4
5
6
7
8
9
class Parent
PARENT = 'parent\'s constant'
end
class Child < Parent
end
p Child.constants # => [:PARENT]
Child::PARENT # => "parent's constant"
余談で、Rubyでは定数の再定義はエラーとならず警告が出るだけという話をしました。
1
2
3
4
5
FOO = "foo"
FOO = "bar"
# (pry):81: warning: already initialized constant FOO
# (pry):80: warning: previous definition of FOO was here
4-1-7 メソッドのオーバーライド
Rubyはメソッドのオーバーライドをサポートしています。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Parent
def greet
puts 'Hi'
end
end
class Child < Parent
def greet(name)
puts "Hi #{name}"
end
end
parent = Parent.new
p parent.greet # => "Hi"
child = Child.new
p child.greet('ruby') # => "Hi ruby"
p child.greet # => ArgumentError: wrong number of arguments (0 for 1)
スーパークラスのメソッドを呼び出すにはsuperを使います。スーパークラスのメソッドにはサブクラスで受け取った引数が自動的に渡されます
1
2
3
4
5
6
7
8
9
10
11
class GrandChild < Child
def greet(name)
super
puts "Nice to meet you!"
end
end
grandchild = GrandChild.new
grandchild.greet 'ruby' # => Hi ruby
# => Nice to meet you!
4-1-8 特異メソッド
オブジェクトは、クラスに定義されたメソッドの他に、そのオブジェクト固有のメソッドを持つことができます。これを特異メソッドと呼びます。
1
2
3
4
5
6
7
8
9
10
11
12
class Foo
end
foo = Foo.new
bar = Foo.new
def bar.singleton_method
puts 'Called!'
end
bar.singleton_method # => Called!
foo.singleton_method # => undefined method `singleton_method'
なお、特異メソッドという名称についてはこちらにまとめてあります。
今回のiruby notebookは以下のとおりです。
セッション
野球Hack!~Pythonを用いたデータ分析と可視化 from @shinyorkeさん
PyCon JPで発表する練習として、Pythonを用いて野球のデータ分析(発表者は「野球Hack」と命名)について発表されました。 Pythonの魅力と好きな言語でHackすること、データから見えてくる言葉の楽しさを伝えていただきました。
今回俺がいかにして転職したか晒す from @Peranikovさん
今月は特に技術的なエントリーを何も書いていなかったので、今回転職した時のノウハウについて発表しました。 おそらくKawasaki.rbで転職について発表したのはこれが初めてでしょう。
発表元の記事はこちら
今回のブログを書いてくださった方々
野球Hack!~Pythonを用いたデータ分析と可視化(素振り) - #kwskrb #28 に参加しました
次回予告
次回は10/25(毎月第4水曜日)開催予定です。ご参加お待ちしております。
寄稿者について
松久保 敬人 (@Peranikov)
RailsからiOSから何でもやってる人だったが、今はDDDとScalaの人。 お酒を投稿するサイトPuhaar!を運営しています。