@ variabelen in Ruby on Rails

Wat is het verschil tussen @titleen 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%

titleis een lokale variabele. Ze bestaan ​​alleen binnen de reikwijdte (huidig ​​blok)

@titleis 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 @titlein uw controllers wanneer u wilt dat uw variabele beschikbaar is in uw mening.

De uitleg is dat @titleeen instantievariabele is terwijl titleeen 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%

@variables 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_addrbenaderd 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 selfen begint met een @ook een instantievariabele behoort tot het object zelf. Exemplaarvariabelen zijn degene die u uitvoert op I.E. .sendETC

Voorbeeld:

@user = User.all

De @useris 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

Other episodes