Tbpgr Blog

Employee Experience Engineer tbpgr(てぃーびー) のブログ

Javaプログラマーが学ぶRuby基礎/Rubyのクラス

概要

Rubyのクラスについて
Javaと変わらない部分は省略

クラス変数

クラス変数は以下の構文で定義出来ます。
@@変数名="初期値"

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