回答:
title
ローカル変数です。それらはそのスコープ内にのみ存在します(現在のブロック)
@title
インスタンス変数であり、クラス内のすべてのメソッドで使用できます。
詳しくはこちらをご覧ください:http : //strugglingwithruby.blogspot.dk/2010/03/variables.html
Ruby on Railsの場合-コントローラーで変数をインスタンス変数(@title
)として宣言すると、ビューで使用できるようになります。
@title
変数をビューで使用できるようにする場合は、コントローラーで使用します。
これは@title
インスタンス変数でtitle
あり、ローカル変数であり、railsはコントローラーからのインスタンス変数をビューで使用できるようにします。これは、テンプレートコード(erb、hamlなど)が現在のコントローラーインスタンスのスコープ内で実行されるために発生します。
違いは変数のスコープです。@versionは、クラスインスタンスのすべてのメソッドで使用できます。
簡単に言えば、コントローラーを使用していて、ビューで変数を使用できるようにする必要がある場合は、を使用します@variable
。
より長い答えについては、これを試してください:http : //www.ruby-doc.org/docs/ProgrammingRuby/html/tut_classes.html
@variable
sはルビではインスタンス変数と呼ばれます。つまり、クラス内の任意のメソッドでこれらの変数にアクセスできます。[クラスのすべてのメソッドにわたって]
@
記号のない変数はローカル変数と呼ばれます。つまり、これらのローカル変数には、その宣言された方法内でのみアクセスできます。ローカルスコープに限定されます。
インスタンス変数の例:
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
上記の例@cust_id
では@cust_name
、@cust_addr
はクラス内の別のメソッドでアクセスされます。しかし、同じことはローカル変数ではアクセスできません。
チュートリアル変数のスコープとは何ですか?いくつかの詳細を非常によく示しています。関連をここで囲んでください。
+------------------+----------------------+
| Name Begins With | Variable Scope |
+------------------+----------------------+
| $ | A global variable |
| @ | An instance variable |
| [a-z] or _ | A local variable |
| [A-Z] | A constant |
| @@ | A class variable |
+------------------+----------------------+
ローカル変数は、その初期化のブロック内からのみアクセスできます。また、ローカル変数は小文字(az)またはアンダースコア(_)で始まります。
また、インスタンス変数はのインスタンスでself
あり、次のもので始まり@
ます。また、インスタンス変数はオブジェクト自体に属しています。インスタンス変数は、IE .send
などでメソッドを実行する変数です
例:
@user = User.all
@user
インスタンス変数であります
また、初期化されていないインスタンス変数の値は Nil
@title
&の違いをどのように説明しtitle
ますか?
@title
かtitle
@変数はインスタンス変数であり、ローカル変数はありません。
詳細については、http://ruby.about.com/od/variables/a/Instance-Variables.htmをご覧ください。