クラス変数
クラス変数は以下の構文で定義出来ます。
@@変数名="初期値"
getter,setterの代替
以下の構文でJavaのアクセサと同様の機能を実現します。
attr_reader :変数名 = Javaでgetterだけ定義した場合と等価
attr_writer :変数名 = Javaでsetterだけ定義した場合と等価
attr_accessor :変数名 = Javaでgetter,setter両方を定義した場合と等価
サンプルコード
sample_class
# encoding: Shift_JIS =begin rdoc = SampleClassクラス =end class SampleClass attr_reader :read_only attr_writer :write_only attr_accessor :rw_both @@class_variable = "hoge" def initialize(read_only,write_only,rw_both) @read_only=read_only @write_only=write_only @rw_both=rw_both end def set_classvariable(str) @@class_variable << str end def get_classvariable() return @@class_variable end end
main
# encoding: Shift_JIS require_relative './sample_class' sample_class = SampleClass.new("read","write","rw") puts sample_class.get_classvariable sample_class.set_classvariable "hoge" puts sample_class.get_classvariable puts sample_class.read_only puts sample_class.rw_both puts sample_class.write_only
出力
main.rb:12:in `<main>': undefined method `write_only' for #<SampleClass:0x1cb40e0> (NoMethodError) hoge hogehoge read rw