ruby on rails,冒号在变量的后面或前面
ruby on rails, colon at back or front of variables
我是 ruby 和 rails 的新手。我认为Rails是最好的API之一,而ruby比较独特,看来ruby可以巧妙地做到"assumptions"来帮助开发者。但我不太确定扩展到什么程度。
我的问题是关于变量中的冒号。
目前我理解的是ruby中的:variable,就是说这个变量不会改变,类似于其他语言中的constant。我对么??
然后我的困惑是,有时我会看到变量前面的冒号,就像这样
Rails.application.config.session_store :cookie_store,
key: '_blog_session'
<%= link_to "Delete", article, confirm: "Are you sure?",
method: :delete %>
key:和method:都在front.What中有冒号这代表吗?
此外
Blog::Application.routes.draw.do
root :to => "articles#index"
end
变量之间有双冒号?
现在我猜测 Blog: 是一个变量,而 :Application 是常量。我对此表示怀疑,因为它没有意义。请赐教?
谢谢
Rails.application.config.session_store :cookie_store, key: '_blog_session'
session_store
是一个需要两个 "Arguments":
的方法
(也可以是session_store :cookie_store, { key: '_blog_session' }
)
同样适用于 link_to "Delete", article, confirm: "Are you sure?", method: :delete
"Delete"
是一个字符串
article
一个变量
{ confirm: '...', method: :delete }
散列,其中 confirm:
、method:
和 :delete
又是符号。
虽然 Blog::Application
:: is basically a namespace resolution operator. 是您在 Blog
模块中解决应用程序 class 的方法。
希望这对您有所帮助。看一下我引用的文档,解释的很好
What i have understand so far is that :variable
in ruby, is to say that this variable will not be able to change, which is similar to constant in other language.
我不确定我是否理解该声明。在Ruby中,常量以大写字母开头:
Foo = 1
重新分配生成警告:
Foo = 1
Foo = 2 #=> warning: already initialized constant Foo
变量以小写字母开头并且重新分配不会引起警告(它们应该会更改):
foo = 1
foo = 2 # no warning
符号以冒号开头:
:a_symbol
:Uppercase_symbol
:"i'm a symbol, too"
它们通常表示静态值,例如:get
和 :post
。符号具有内存效率,因为它们只创建一次 - 相同的符号文字总是 returns 相同的对象。检查两个符号是否相等是一种廉价操作。
Both key:
and method:
(...) What does that this represent?
这是哈希的另一种语法。您可以在 IRB 中输入它来查看结果:
{ foo: 1, bar: 2 }
#=> {:foo=>1, :bar=>2}
There are double colons inbetween variables? now I am guessing that Blog:
is one variable, and :Application
is constant.
不是,Blog
和Application
都是常量,::
是作用域解析运算符。它可用于访问嵌套常量,例如:
module Foo
class Bar
BAZ = 123
end
end
Foo::Bar::BAZ #=> 123
:存在 => 真
存在:真实
在底部的示例中,冒号表示,“嘿,我从 presence 指向 true。
我是 ruby 和 rails 的新手。我认为Rails是最好的API之一,而ruby比较独特,看来ruby可以巧妙地做到"assumptions"来帮助开发者。但我不太确定扩展到什么程度。
我的问题是关于变量中的冒号。
目前我理解的是ruby中的:variable,就是说这个变量不会改变,类似于其他语言中的constant。我对么??
然后我的困惑是,有时我会看到变量前面的冒号,就像这样
Rails.application.config.session_store :cookie_store,
key: '_blog_session'
<%= link_to "Delete", article, confirm: "Are you sure?",
method: :delete %>
key:和method:都在front.What中有冒号这代表吗? 此外
Blog::Application.routes.draw.do
root :to => "articles#index"
end
变量之间有双冒号?
现在我猜测 Blog: 是一个变量,而 :Application 是常量。我对此表示怀疑,因为它没有意义。请赐教?
谢谢
Rails.application.config.session_store :cookie_store, key: '_blog_session'
session_store
是一个需要两个 "Arguments":
(也可以是session_store :cookie_store, { key: '_blog_session' }
)
同样适用于 link_to "Delete", article, confirm: "Are you sure?", method: :delete
"Delete"
是一个字符串article
一个变量{ confirm: '...', method: :delete }
散列,其中confirm:
、method:
和:delete
又是符号。
虽然 Blog::Application
:: is basically a namespace resolution operator. 是您在 Blog
模块中解决应用程序 class 的方法。
希望这对您有所帮助。看一下我引用的文档,解释的很好
What i have understand so far is that
:variable
in ruby, is to say that this variable will not be able to change, which is similar to constant in other language.
我不确定我是否理解该声明。在Ruby中,常量以大写字母开头:
Foo = 1
重新分配生成警告:
Foo = 1
Foo = 2 #=> warning: already initialized constant Foo
变量以小写字母开头并且重新分配不会引起警告(它们应该会更改):
foo = 1
foo = 2 # no warning
符号以冒号开头:
:a_symbol
:Uppercase_symbol
:"i'm a symbol, too"
它们通常表示静态值,例如:get
和 :post
。符号具有内存效率,因为它们只创建一次 - 相同的符号文字总是 returns 相同的对象。检查两个符号是否相等是一种廉价操作。
Both
key:
andmethod:
(...) What does that this represent?
这是哈希的另一种语法。您可以在 IRB 中输入它来查看结果:
{ foo: 1, bar: 2 }
#=> {:foo=>1, :bar=>2}
There are double colons inbetween variables? now I am guessing that
Blog:
is one variable, and:Application
is constant.
不是,Blog
和Application
都是常量,::
是作用域解析运算符。它可用于访问嵌套常量,例如:
module Foo
class Bar
BAZ = 123
end
end
Foo::Bar::BAZ #=> 123
:存在 => 真
存在:真实
在底部的示例中,冒号表示,“嘿,我从 presence 指向 true。