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の実現などもう一歩入ったところは次回取りかかれればと思います。