NaaN日記

やったこと、覚えたことを発信する場

attr_reader, attr_writerの確認(Ruby)

なんとなく理解できるようになったとはいえ、「理解できました」というにはまだ遠い。
ということで、attr_writerはこうやって動くんだなーということを確認。

class Name
  attr_reader :user_name
  def initialize
    @user_name = "Tom"
  end
end

class Greet < Name
  attr_writer :user_name
end

a = Greet.new
p a.user_name # "Tom"
p a.user_name = "Thomas" # "Thomas"
class Name
  attr_reader :user_name
  def initialize
    @user_name = "Tom"
  end
end

class Hello < Name
  attr_writer :user_name
  def hello
    @user_name = "Ken"
    puts "Hello, #{@user_name}"
  end
end

b = Hello.new
b.hello # Hello, Ken
p b.user_name # "Ken"
p b.user_name = "Bob" # "Bob"
attr_reader, attr_writerを使わずに書くとこうなる
class Name
  def initialize
    @user_name = "Tom"
  end
  
  def user_name
    @user_name
  end
  
  def user_name=(name)
    @user_name = name
  end
end

class Hello < Name
  def hello
    @user_name = "Ken"
    puts "Hello, #{user_name}"
  end
end

b = Hello.new
b.hello # Hello, Ken
p b.user_name # "Ken"
p b.user_name = "Bob" # "Bob"

もうちょっと使いこなせるようになったらまたメモしにくる