Jawaban:
title
adalah variabel lokal. Mereka hanya ada dalam ruang lingkupnya (blok saat ini)
@title
adalah variabel instan - dan tersedia untuk semua metode di dalam kelas.
Anda dapat membaca lebih lanjut di sini: http://strugglingwithruby.blogspot.dk/2010/03/variables.html
Di Ruby on Rails - mendeklarasikan variabel Anda di controller Anda sebagai variabel instan ( @title
) membuatnya tersedia untuk Anda lihat.
Gunakan @title
di pengontrol Anda ketika Anda ingin variabel Anda tersedia di tampilan Anda.
Penjelasannya adalah bahwa itu @title
adalah variabel instan dan title
merupakan variabel lokal dan rel membuat variabel instan dari pengontrol tersedia untuk dilihat. Ini terjadi karena kode templat (erb, haml, dll) dieksekusi dalam lingkup instance pengontrol saat ini.
Perbedaannya terletak pada ruang lingkup variabel. Versi @ tersedia untuk semua metode instance kelas.
Jawaban singkatnya, jika Anda berada di controller dan Anda perlu membuat variabel tersedia untuk tampilan kemudian gunakan @variable
.
Untuk jawaban yang lebih lama coba ini: http://www.ruby-doc.org/docs/ProgrammingRuby/html/tut_classes.html
@variable
s disebut variabel instan dalam ruby. Yang berarti Anda dapat mengakses variabel-variabel ini dalam METODE APA PUN di dalam kelas. [Melintasi semua metode di kelas]
Variabel tanpa @
simbol disebut variabel lokal, yang berarti Anda dapat mengakses variabel lokal ini hanya dalam METODE YANG DEKLARKAN. Terbatas pada lingkup lokal.
Contoh Variabel Instans:
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
Dalam contoh di atas @cust_id
, @cust_name
, @cust_addr
diakses di metode lain dalam kelas. Tetapi hal yang sama tidak akan dapat diakses dengan variabel lokal.
Tutorial tentang Apa Lingkup Variabel? menyajikan beberapa detail dengan cukup baik, cukup lampirkan yang terkait di sini.
+------------------+----------------------+
| Name Begins With | Variable Scope |
+------------------+----------------------+
| $ | A global variable |
| @ | An instance variable |
| [a-z] or _ | A local variable |
| [A-Z] | A constant |
| @@ | A class variable |
+------------------+----------------------+
Variabel lokal hanya dapat diakses dari dalam blok inisialisasi itu. Variabel lokal juga dimulai dengan huruf kecil (az) atau garis bawah (_).
Dan variabel instan adalah instance dari self
dan dimulai dengan @
variabel instance juga milik objek itu sendiri. Variabel Instance adalah variabel yang Anda lakukan metode misalnya .send
dll
contoh:
@user = User.all
Ini @user
adalah variabel instan
Dan variabel instance tidak diinisialisasi memiliki nilai Nil
@title
& title
?
@title
atautitle
Variabel @ adalah variabel instan, tanpa variabel lokal.
Baca lebih lanjut di http://ruby.about.com/od/variables/a/Instance-Variables.htm