Ruby on Rails, colon en la parte posterior o frontal de las variables
ruby on rails variable types (2)
Lo que he entendido hasta ahora es que
:variable
en ruby, es decir que esta variable no podrá cambiar, que es similar a constante en otro idioma.
No estoy seguro si entiendo esa declaración. En Ruby, las constantes comienzan con una letra mayúscula:
Foo = 1
La reasignación genera una advertencia:
Foo = 1
Foo = 2 #=> warning: already initialized constant Foo
Las variables comienzan con una letra minúscula y la reasignación no causa una advertencia (se supone que deben cambiar):
foo = 1
foo = 2 # no warning
Los símbolos comienzan con dos puntos:
:a_symbol
:Uppercase_symbol
:"i''m a symbol, too"
A menudo representan valores estáticos, por ejemplo :get
y :post
. Los símbolos son eficientes desde el punto de vista de la memoria, ya que se crean solo una vez: el mismo símbolo literal siempre devuelve el mismo objeto. Verificar si dos símbolos son iguales es una operación barata.
Ambas
key:
ymethod:
(...) ¿Qué representa eso?
Esta es una sintaxis alternativa para hashes. Puede escribirlo en IRB para ver el resultado:
{ foo: 1, bar: 2 }
#=> {:foo=>1, :bar=>2}
Hay dos puntos dobles entre las variables? ahora supongo que
Blog:
es una variable, y:Application
es constante.
No, Blog
y Application
son ambas constantes y ::
es el operador de resolución de alcance. Se puede usar para acceder a constantes anidadas, por ejemplo:
module Foo
class Bar
BAZ = 123
end
end
Foo::Bar::BAZ #=> 123
Soy nuevo en ruby, y usa ambos. Creo que Rails es una de las mejores API, y ruby es bastante único, parece que Ruby puede hacer "suposiciones" hábilmente para ayudar al desarrollador. Pero no estoy muy seguro de qué extensión.
mis preguntas son sobre el colon en variable.
Lo que he entendido hasta ahora es que : variable en ruby, es decir que esta variable no podrá cambiar, que es similar a constante en otro idioma. ¿¿Estoy en lo correcto??
Entonces mi confusión es, a veces veo el colon enfrente de variable, como este
Rails.application.config.session_store :cookie_store,
key: ''_blog_session''
<%= link_to "Delete", article, confirm: "Are you sure?",
method: :delete %>
Ambas teclas: y método: tiene dos puntos al frente. ¿Qué representa eso? y además
Blog::Application.routes.draw.do
root :to => "articles#index"
end
Hay dos puntos dobles entre las variables? ahora supongo que Blog: es una variable, y: la aplicación es constante. lo cual dudo que sea, porque no tiene sentido. ¿Por favor iluminame?
gracias
Rails.application.config.session_store :cookie_store, key: ''_blog_session''
session_store
es un método que toma dos "Argumentos":
-
:cookie_store
es un símbolo -
key: ''_blog_session''
es en realidad una forma breve de escribir un Hash .
(También podría ser session_store :cookie_store, { key: ''_blog_session'' }
)
Del mismo modo para link_to "Delete", article, confirm: "Are you sure?", method: :delete
-
"Delete"
es una cadena -
article
una variable -
{ confirm: ''...'', method: :delete }
hash dondeconfirm:
method:
y:delete
son Símbolos nuevamente.
Mientras que Blog::Application
:: es básicamente un operador de resolución de espacio de nombres. Una forma de abordar la clase de Aplicación en el módulo Blog
.
Espero que esto ayude. Eche un vistazo a la documentación a la que hice referencia, se explica bastante bien.