Rubyのclass
Ruby
ざつめも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としても定義できる
https://sil.hatenablog.com/entry/rethinking-ruby-private-access-modifier
論争があるらしい
https://twitter.com/yukihiro_matz/status/930729626279796736
public/private/protectedは、アクセス制御のために作ったものではないならしい
じゃあ、どう使うのが正解なのか知りたい #??
https://qiita.com/kidach1/items/055021ce42fe2a49fd66
https://blog.jnito.com/entry/20120315/1331754912
https://qiita.com/tbpgr/items/6f1c0c7b77218f74c63e
privateと書いていても外部からアクセスできる
らしい
やり方は知らん
クラスメソッド
staticみたいなやつだと認識しているmrsekut.icon
def self.hogeみたいにして、self.付けて定義する
https://qiita.com/right1121/items/c3997653a621c74fb97d
こういう感じで使い分けるらしい
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
RubyのStruct Classs
haskellのwhere節のclass版みたいなイメージを抱いたmrsekut.icon
こんなんあるんや
こういう用途で使うものなのか?
class内のmethodを微妙な距離に隔離するものとして使っている