Variabel instans
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Ruby di Coddy. Pelajaran 3 dari 57.
Variabel instance diawali dengan @ dan dimiliki oleh satu object. Nilai yang disimpan di initialize tetap tersedia untuk setiap method dari object tersebut, dan setiap instance memiliki salinannya sendiri:
class Dog
def initialize(name)
@name = name
end
def speak
"#{@name} says Woof"
end
end
rex = Dog.new("Rex")
bella = Dog.new("Bella")
puts rex.speak
puts bella.speakOutput:
Rex says Woof
Bella says WoofMethod dapat mengubah variabel instance, sehingga sebuah object mengingat apa yang terjadi padanya. Secara keseluruhan, variabel instance-nya adalah state object tersebut:
class Counter
def initialize
@count = 0
end
def increment
@count += 1
end
def report
"count is #{@count}"
end
end
clicks = Counter.new
clicks.increment
clicks.increment
puts clicks.reportOutput:
count is 2Variabel instance tidak dapat diakses dari luar object. Kode dari luar hanya dapat memanggil method, jadi class yang ingin membagikan nilai mendefinisikan method yang mengembalikannya, yaitu reader:
class Dog
def initialize(name)
@name = name
end
def name
@name
end
end
rex = Dog.new("Rex")
puts rex.name
begin
rex.age
rescue NoMethodError => e
puts e.message
endOutput:
Rex
undefined method `age' for an instance of DogVariabel instance yang tidak pernah diberi nilai adalah nil dan tidak menimbulkan error, jadi nama yang salah ketik secara diam-diam membaca variabel lain yang kosong. instance_variables mencantumkan variabel yang benar-benar dimiliki sebuah object:
class Lamp
def initialize
@on = false
end
def status
@onn.inspect
end
end
lamp = Lamp.new
puts lamp.status
p lamp.instance_variablesOutput:
nil
[:@on]Tantangan
MudahLengkapi class Pet. initialize(name, species, age) menyimpan ketiga nilai, birthday menambahkan satu tahun pada usia, dan describe mengembalikan satu kalimat: hewan peliharaan bernama Rex, spesies dog, berusia 3 menghasilkan Rex is a 3 year old dog.
Code yang disediakan membuat Pet dari tiga baris input pertama (nama, spesies, usia), memanggil birthday sebanyak yang ditentukan baris keempat, lalu mencetak describe.
Tulis kodemu di pet.rb. main.rb berisi code input/output yang disediakan dan tidak dapat diedit.
Coba sendiri
require_relative 'pet'
# Kode input/output yang disediakan: biarkan apa adanya
input = []
while (line = gets)
input << line.chomp
end
pet = Pet.new(input[0], input[1], input[2].to_i)
input[3].to_i.times { pet.birthday }
puts pet.describe
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Pemrograman Berorientasi Objek
1class dan object
Bekerja dengan fileMendefinisikan classVariabel instansmethod dan selfto_s dan inspectRingkasan: Kartu Perpustakaan4Enkapsulasi
private methodprotected methodprivate setterMelindungi StatusUlasan, Mesin Penjual Otomatis7Polimorfisme dan Duck Typing
PolimorfismeDuck TypingMethod Abstrakcase dan classRingkasan: Method Pembayaran2Accessor dan self
Pembaca dan PenulisSetter Kustomself dalam methodIdentitas dan KesetaraanRangkuman: Daftar Kontak8Special method
Kesetaraan dan hashOperator methodPengindeksan dan penambahanKoleksi kustomRingkasan: Pecahan11Proyek: Manajemen Perpustakaan
Buku dan AnggotaMeminjam Buku3Method dan Variabel class
Method classVariabel instance classKonstantaMethod pabrikRangkuman: Kode KuponLatihan sendiri: Compiler Ruby online