Rubyのclass
ざつめもmrsekut.icon
@hogeはinstance property
this.みたいなのは付けない
methodにも、propertyにも
method呼び出し時は()も付けない
アクセス修飾子の定義の仕方が独特
code:rb
class Cat
def meow
puts "Meow!"
end
private
def bowwow
puts "Bowwow!"
end
def cock_a_doodle_doo
puts "cock-a-doodle-doo"
end
end
こう書くと、bowwowとcook_a_doodle_dooがprivateになる
private def bowbowとしても定義できる
論争があるらしい
public/private/protectedは、アクセス制御のために作ったものではないならしい
privateと書いていても外部からアクセスできる
らしい
やり方は知らん
staticみたいなやつだと認識しているmrsekut.icon
def self.hogeみたいにして、self.付けて定義する
こういう感じで使い分けるらしい
attr_readerを付けるとgetterの自動実装になる 以下2つは同じ意味
code:rb
class Wheel
attr_reader :rim
code:rb
class Wheel
def rim
@rim
end
このコードのdiameterノナカとかでrimとかtireみたいに呼び出しているのは、
instance propertyではなく、getter経由のinstance propety
code:rb
class Wheel
attr_reader :rim, :tire
def initialize(rim, tire)
@rim = rim
@tire = tire
end
def diameter
rim + (tire * 2)
end
end
@を毎回書くよりもgetterを定義しちゃって@なして書くほうが楽なので、getterを促す言語デザインになっているmrsekut.icon
haskellのwhere節のclass版みたいなイメージを抱いたmrsekut.icon
こんなんあるんや
こういう用途で使うものなのか?
class内のmethodを微妙な距離に隔離するものとして使っている