Rubyをはじめて学んで調べたところ
はじめに
Ruby on Rrailsの起動まではうまくいきました。 実際のプログラミングに入りたいと思いますが、まずRubyの基礎を勉強していく中で謎だったものご紹介したいと思います。
moduleとは何者か
これははじめ何者か...と思いました。 class持っていたりmethod持っていたり、そういう立ち位置のものかと理解はしました。
調べると、正確にはインスタンス化できないものです。 そして、それをincludeすることでmixinを実現するという流れです。
class SearchProduct < Product include ProductModules def price @price = 1000 end end
attr_reader, attr_writer, attr_accessorとは何者か
これはどうしてこういう仕様になったのかちょっとわかりませんが、アクセスを制御するような関数なのでしょうか。
attr_readerならgetterのみ、attr_writerならsetterのみ、attr_accessorなら両方というかんじだと思います。
イミュータブルなクラスを作るにはどうしたらよいのでしょうか。
何やら参照先で hoge= Hoge.new.freeze
みたいなおまじないをするとイミュータブルになるようです。
initializeをオーバロードできない
このあたりも言語の仕様的に初期化は1つであとは、代入的なものはメソッドでやってください、という明示なのでしょうか。 下記のようにfactoryメソッドを作って、newして代入していくという形になるっぽいです。
def self.create(price, tax) price = self.new price.value = price price.tax = tax return price end
まとめ
はじめに疑問だったところはこれぐらいで、あとは他の言語やオブジェクト指向の経験があれば雰囲気わかるかんじでした。 それだけRubyが簡潔な言語なんだなと実感しました。 ただ、DB操作やmixinや並列処理、APIの実現などもう一歩入ったところは次回取りかかれればと思います。