インスタンス変数はオブジェクトが作成されるたびに使用され、初期化されていない場合はnil
値があり、クラス変数を初期化する必要があり、そうでない場合は生成されてエラーになります。
最大の理由の 1 つは、サブクラス化です。サブクラス化を計画している場合は、クラス変数を使用する必要があります。この 2 つと、いつ何を使用するかについて説明しているリンクを次に示します。
http://www.railstips.org/blog/archives/2006/11/18/class-and-instance-variables-in-ruby/
2つの違いを説明するのに役立つリンクは次のとおりです。
http://www.tutorialspoint.com/ruby/ruby_variables.htm
これは、先ほど言及したサイトのコードで、両方が使用されていることを示しています。
#!/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
# Create Objects
cust1=Customer.new("1", "John", "Wisdom Apartments, Ludhiya")
cust2=Customer.new("2", "Poul", "New Empire road, Khandala")
# Call Methods
cust1.total_no_of_customers()
cust2.total_no_of_customers()