Ruby変数
変数は、任意のプログラムで使用できる任意のデータを保持する記憶場所です。
Ruby は 5 種類の変数をサポートしています。
通常、アンダースコアで始まる小文字: 変数。
$
で始まる: グローバル変数。$
开头:全局变量(Global variable)。@
开头:实例变量(Instance variable)。@@
@
で始まる: インスタンス変数。
@@
で始める: クラス変数 クラス変数は継承チェーン全体で共有されます 大文字で始める: 定数。 これらの変数については、前の章ですでに大まかに理解しました。この章では、これら 5 種類の変数について詳しく説明します。 Ruby グローバル変数 グローバル変数は $ で始まります。初期化されていないグローバル変数の値は
nil
であり、-w オプションを使用すると警告が生成されます。
グローバル変数に値を代入するとグローバルの状態が変化するため、グローバル変数の使用はお勧めできません。
次の例は、グローバル変数の使用法を示しています。 #!/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
注:
Ruby では、変数または定数の前に # 文字を置くことで、変数または定数の値にアクセスできます。全局变量在 Class1 中输出为 10 全局变量在 Class2 中输出为 10Rubyインスタンス変数
インスタンス変数は@で始まります。初期化されていないインスタンス変数の値は
であり、-w オプションの使用後に警告が生成されます。
次の例は、インスタンス変数の使用法を示しています。
#!/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()ここで、@cust_id、@cust_name、@cust_addr はインスタンス変数です。これにより、次の結果が生成されます:
Customer id 1 Customer name John Customer address Wisdom Apartments, Ludhiya Customer id 2 Customer name Poul Customer address New Empire road, KhandalaRuby クラス変数 クラス変数は @@ で始まり、メソッド定義で使用する前に初期化する必要があります。
初期化されていないクラス変数を参照すると、エラーが生成されます。クラス変数は、それが定義されているクラスまたはモジュールのサブクラスまたはサブモジュール間で共有できます。
クラス変数をオーバーロードすると、-w オプションを使用した後に警告が生成されます。
次の例は、クラス変数の使用法を示しています。
#!/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()ここで、@@no_of_customers はクラス変数です。これにより、次の結果が生成されます:
Total number of customers: 1 Total number of customers: 2Ruby ローカル変数 ローカル変数は小文字またはアンダースコア _ で始まります。ローカル変数のスコープは、クラス、モジュール、def、do から対応する末尾まで、または左中括弧から右中括弧 {} までです。 初期化されていないローカル変数が呼び出される場合、パラメータなしでメソッドを呼び出したと解釈されます。 初期化されていないローカル変数への代入も変数宣言とみなされます。変数は現在のスコープが終了するまで存在します。ローカル変数の有効期間は、Ruby がプログラムを解析するときに決定されます。 🎜🎜上記の例では、ローカル変数は id、name、addr です。 🎜🎜ルビ定数🎜🎜 定数は大文字で始まります。クラスまたはモジュール内で定義された定数には、クラスまたはモジュール内からアクセスでき、クラスまたはモジュールの外で定義された定数にはグローバルにアクセスできます。 🎜
メソッド内で定数を定義することはできません。初期化されていない定数を参照するとエラーが発生します。初期化された定数に値を代入すると、警告が生成されます。
#!/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
ここで、VAR1とVAR2は定数です。これにより、次の結果が生成されます:
第一个常量的值为 100 第二个常量的值为 200
Ruby 疑似変数
これらは、ローカル変数のように見えますが、定数のように動作する特別な変数です。これらの変数に値を割り当てることはできません。
self: 現在のメソッドの受信側オブジェクト。
true:はtrueの値を表します。
false:はfalseの値を表します。
nil:は未定義の値を表します。
__FILE__: 現在のソース ファイルの名前。
__LINE__: ソース ファイル内の現在の行の番号。