Pembolehubah rubi
Pembolehubah ialah lokasi storan yang menyimpan sebarang data yang boleh digunakan oleh mana-mana program.
Ruby menyokong lima jenis pembolehubah.
Biasanya huruf kecil, bermula dengan garis bawah: Pembolehubah. Bermula dengan
$
: Pembolehubah global. Bermula dengan@
: Pembolehubah instance.@@
bermula dengan: Pembolehubah kelas Pembolehubah kelas dikongsi sepanjang rantaian warisanBermula dengan huruf besar: pemalar ( Dimalarkan).
Anda telah pun memahami secara kasar pembolehubah ini dalam bab-bab sebelumnya Bab ini akan menerangkan lima jenis pembolehubah ini kepada anda secara terperinci.
Pembolehubah Global Ruby
Pembolehubah global bermula dengan $. Nilai pembolehubah global yang tidak dimulakan ialah nil, yang akan menjana amaran selepas menggunakan pilihan -w.
Menetapkan nilai kepada pembolehubah global akan mengubah keadaan global, jadi tidak disyorkan untuk menggunakan pembolehubah global.
Contoh berikut menunjukkan penggunaan pembolehubah global.
#!/usr/bin/ruby # -*- coding: UTF-8 -*- $global_variable = 10 class Class1 def print_global puts "全局变量在 Class1 中输出为 #$global_variable" end end class Class2 def print_global puts "全局变量在 Class2 中输出为 #$global_variable" end end class1obj = Class1.new class1obj.print_global class2obj = Class2.new class2obj.print_global
Di sini, $global_variable ialah pembolehubah global. Ini akan menghasilkan keputusan berikut:
Nota: Dalam Ruby, anda boleh mengakses nilai mana-mana pembolehubah atau pemalar dengan meletakkan aksara # di hadapan pembolehubah atau pemalar.
全局变量在 Class1 中输出为 10 全局变量在 Class2 中输出为 10
Pembolehubah tika Ruby
Pembolehubah tikar bermula dengan @. Pembolehubah contoh yang tidak dimulakan mempunyai nilai nihil, yang akan menjana amaran selepas menggunakan pilihan -w.
Contoh berikut menunjukkan penggunaan pembolehubah contoh.
#!/usr/bin/ruby class Customer def initialize(id, name, addr) @cust_id=id @cust_name=name @cust_addr=addr end def display_details() puts "Customer id #@cust_id" puts "Customer name #@cust_name" puts "Customer address #@cust_addr" end end # 创建对象 cust1=Customer.new("1", "John", "Wisdom Apartments, Ludhiya") cust2=Customer.new("2", "Poul", "New Empire road, Khandala") # 调用方法 cust1.display_details() cust2.display_details()
Di sini, @cust_id, @cust_name dan @cust_addr ialah pembolehubah tika. Ini akan menghasilkan keputusan berikut:
Customer id 1 Customer name John Customer address Wisdom Apartments, Ludhiya Customer id 2 Customer name Poul Customer address New Empire road, Khandala
Pembolehubah Kelas Ruby
Pembolehubah kelas bermula dengan @@ dan mesti dimulakan sebelum ia boleh digunakan dalam definisi kaedah.
Merujuk pembolehubah kelas yang tidak dimulakan akan menghasilkan ralat. Pembolehubah kelas boleh dikongsi antara subkelas atau submodul kelas atau modul di mana ia ditakrifkan.
Melebihi pembolehubah kelas menghasilkan amaran selepas menggunakan pilihan -w.
Contoh berikut menunjukkan penggunaan pembolehubah kelas.
#!/usr/bin/ruby class Customer @@no_of_customers=0 def initialize(id, name, addr) @cust_id=id @cust_name=name @cust_addr=addr end def display_details() puts "Customer id #@cust_id" puts "Customer name #@cust_name" puts "Customer address #@cust_addr" end def total_no_of_customers() @@no_of_customers += 1 puts "Total number of customers: #@@no_of_customers" end end # 创建对象 cust1=Customer.new("1", "John", "Wisdom Apartments, Ludhiya") cust2=Customer.new("2", "Poul", "New Empire road, Khandala") # 调用方法 cust1.total_no_of_customers() cust2.total_no_of_customers()
Di sini, @@no_of_customers ialah pembolehubah kelas. Ini akan menghasilkan keputusan berikut:
Total number of customers: 1 Total number of customers: 2
Pembolehubah Tempatan Ruby
Pembolehubah setempat bermula dengan huruf kecil atau garis bawah _. Pembolehubah setempat diskop daripada kelas, modul, def atau lakukan ke hujung yang sepadan atau daripada pendakap buka ke pendakap tutup {}.
Apabila pembolehubah tempatan yang tidak dimulakan dipanggil, ia ditafsirkan sebagai memanggil kaedah tanpa parameter.
Menetapkan nilai kepada pembolehubah tempatan yang tidak dimulakan juga boleh dianggap sebagai pengisytiharan pembolehubah. Pembolehubah akan wujud sehingga akhir skop semasa. Jangka hayat pembolehubah tempatan ditentukan apabila Ruby menghuraikan atur cara.
Dalam contoh di atas, pembolehubah tempatan ialah id, nama dan addr.
Pemalar Ruby
Pemalar bermula dengan huruf besar. Pemalar yang ditakrifkan dalam kelas atau modul boleh diakses dari dalam kelas atau modul, dan pemalar yang ditakrifkan di luar kelas atau modul boleh diakses secara global.
Malar tidak boleh ditakrifkan dalam kaedah. Merujuk kepada pemalar yang tidak dimulakan akan menghasilkan ralat. Menetapkan nilai kepada pemalar yang dimulakan akan menghasilkan amaran.
#!/usr/bin/ruby # -*- coding: UTF-8 -*- class Example VAR1 = 100 VAR2 = 200 def show puts "第一个常量的值为 #{VAR1}" puts "第二个常量的值为 #{VAR2}" end end # 创建对象 object=Example.new() object.show
Di sini, VAR1 dan VAR2 ialah pemalar. Ini akan menghasilkan keputusan berikut:
第一个常量的值为 100 第二个常量的值为 200
Ruby Pseudo-Variables
Ia adalah pembolehubah khas yang mempunyai rupa pembolehubah tempatan tetapi berkelakuan seperti pemalar. Anda tidak boleh memberikan sebarang nilai kepada pembolehubah ini.
diri: Objek penerima kaedah semasa.
benar: mewakili nilai benar.
salah: mewakili nilai palsu.
nihil: mewakili nilai yang tidak ditentukan.
__FAIL__: Nama fail sumber semasa.
__LINE__: Nombor baris semasa dalam fail sumber.