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":

的方法
  • :cookie_store 是一个 Symbol
  • key: '_blog_session' 实际上是 Hash.
  • 的简写形式

(也可以是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.

不是,BlogApplication都是常量,::是作用域解析运算符。它可用于访问嵌套常量,例如:

module Foo
  class Bar
    BAZ = 123
  end
end

Foo::Bar::BAZ #=> 123

:存在 => 真

存在:真实

在底部的示例中,冒号表示,“嘿,我从 presence 指向 true。