Wat is het verschil tussen @title
en title
? Omdat ze allebei variabele namen kunnen zijn. Ook, hoe bepaal ik welke soort variabele ik zou moeten gebruiken? Met @
of niet?
Antwoord 1, Autoriteit 100%
title
is een lokale variabele. Ze bestaan alleen binnen de reikwijdte (huidig blok)
@title
is een instantievariabele – en is beschikbaar voor alle methoden binnen de klasse.
U kunt hier meer lezen:
http://strugglingwithruby.blogspot.dk/2010/03/variabelen.html
In Ruby on Rails – Als u uw variabelen in uw controller wilt declareren (@title
) maakt ze beschikbaar voor uw weergave.
Antwoord 2, Autoriteit 7%
Gebruik @title
in uw controllers wanneer u wilt dat uw variabele beschikbaar is in uw mening.
De uitleg is dat @title
een instantievariabele is terwijl title
een lokale variabele is. Rails maakt bijvoorbeeld variabelen uit controllers die beschikbaar zijn voor weergaven omdat de sjablooncode (ERB, HAML, enz.) Wordt uitgevoerd binnen de reikwijdte van de huidige controller-instantie.
Antwoord 3, Autoriteit 5%
Het verschil zit in de reikwijdte van de variabele. De @version is beschikbaar voor alle methoden van de Klasse-instantie.
Het korte antwoord, als u in de controller bent en u de variabele beschikbaar moet maken voor de weergave, gebruik dan @variable
.
Voor een veel langer antwoord Probeer dit: http: // www. ruby-doc.org/docs/programmingruby/html/tut_classes.html
Antwoord 4, Autoriteit 5%
Een zelfstudie over Wat is variabel bereik?geeft enkele details behoorlijk Nou, sluit hier gewoon de gerelateerde in.
+------------------+----------------------+
| Name Begins With | Variable Scope |
+------------------+----------------------+
| $ | A global variable |
| @ | An instance variable |
| [a-z] or _ | A local variable |
| [A-Z] | A constant |
| @@ | A class variable |
+------------------+----------------------+
Antwoord 5, autoriteit 3%
@variable
s worden instantievariabelen genoemd in ruby. Wat betekent dat je toegang hebt tot deze variabelen in ELKE METHODE binnen de klas. [Over alle methoden in de klas]
Variabelen zonder het @
-symbool worden lokale variabelen genoemd, wat betekent dat u deze lokale variabelen alleen binnen DIE VERKLAARDE METHODE kunt openen. Beperkt tot het lokale bereik.
Voorbeeld van instantievariabelen:
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
In het bovenstaande voorbeeld worden @cust_id
, @cust_name
, @cust_addr
benaderd op een andere methode binnen de klasse. Maar hetzelfde zou niet toegankelijk zijn met lokale variabelen.
Antwoord 6
Een lokale variabele is alleen toegankelijk vanuit het blok van zijn initialisatie. Ook begint een lokale variabele met een kleine letter (A-Z) of underscore (_).
en exemplaar variabele is een exemplaar van self
en begint met een @
ook een instantievariabele behoort tot het object zelf. Exemplaarvariabelen zijn degene die u uitvoert op I.E. .send
ETC
Voorbeeld:
@user = User.all
De @user
is de instantievariabele
en niet-geïnitialiseerde instantievariabelen hebben een waarde van Nil
Antwoord 7
@ Variabelen zijn exemplaarvariabelen, zonder lokale variabelen.
Lees meer op http://ruby.about.com/od /Variables/a/instance-variables.htm