답변:
title
지역 변수입니다. 범위 내에서만 존재합니다 (현재 블록)
@title
인스턴스 변수이며 클래스 내의 모든 메소드에서 사용할 수 있습니다.
자세한 내용은 여기를 참조하십시오 : http://strugglingwithruby.blogspot.dk/2010/03/variables.html
Ruby on Rails에서 컨트롤러의 변수를 인스턴스 변수 ( @title
) 로 선언 하면 뷰에서 사용할 수 있습니다.
차이점은 변수의 범위에 있습니다. @version은 클래스 인스턴스의 모든 메소드에서 사용할 수 있습니다.
짧은 대답은 컨트롤러에 있고 변수를 뷰에 제공 해야하는 경우을 사용하십시오 @variable
.
훨씬 더 긴 대답을 보려면 다음을 시도하십시오 : http://www.ruby-doc.org/docs/ProgrammingRuby/html/tut_classes.html
@variable
루비에서는 인스턴스 변수라고합니다. 클래스 내부의 모든 방법으로 이러한 변수에 액세스 할 수 있습니다. [클래스의 모든 메소드에서]
@
기호가 없는 변수 는 로컬 변수라고하며, 이는 선언 된 방법에서만 이러한 로컬 변수에 액세스 할 수 있음을 의미합니다. 로컬 범위로 제한됩니다.
인스턴스 변수의 예 :
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
이며 시작으로 시작합니다. @
또한 인스턴스 변수는 객체 자체에 속합니다. 인스턴스 변수는 예를 들어 메소드를 수행하는 변수입니다..send
등에서
예:
@user = User.all
는 @user
인스턴스 변수
초기화되지 않은 인스턴스 변수의 값은 Nil
@title
& 의 차이점을 설명 title
합니까?
@title
나title
@ 변수는 인스턴스 변수이며 로컬 변수가 없습니다.
http://ruby.about.com/od/variables/a/Instance-Variables.htm 에서 자세히 알아보십시오.