使用 getter 和 setter 訪問例項變數
我們有三種方法:
attr_reader
:用於允許在課堂外傳遞變數。attr_writer
:用於允許修改類外的變數。attr_accessor
:結合兩種方法。
class Cat
attr_reader :age # you can read the age but you can never change it
attr_writer :name # you can change name but you are not allowed to read
attr_accessor :breed # you can both change the breed and read it
def initialize(name, breed)
@name = name
@breed = breed
@age = 2
end
def speak
puts "I'm #{@name} and I am a #{@breed} cat"
end
end
my_cat = Cat.new("Banjo", "birman")
# reading values:
my_cat.age #=> 2
my_cat.breed #=> "birman"
my_cat.name #=> Error
# changing values
my_cat.age = 3 #=> Error
my_cat.breed = "sphynx"
my_cat.name = "Bilbo"
my_cat.speak #=> I'm Bilbo and I am a sphynx cat
請注意,引數是符號。這通過建立方法來工作。
class Cat
attr_accessor :breed
end
基本相同:
class Cat
def breed
@breed
end
def breed= value
@breed = value
end
end