ruby-on-rails - rails安装 - rails数据库



红宝石在轨道上,结肠后面或前面的变量 (2)

到目前为止我所了解的是:variable ruby中的:variable ,就是说这个变量将不能改变,这与其他语言中的常量相似。

我不确定我是否理解这个说法。 在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 。 符号的内存效率很高,因为它们只创建一次 - 相同的符号文字总是返回相同的对象。 检查两个符号是否相等是一个便宜的操作。

key:method: (...)这代表什么?

这是散列的替代语法。 您可以在IRB中输入以查看结果:

{ foo: 1, bar: 2 }
#=> {:foo=>1, :bar=>2}

变量之间有两个冒号? 现在我猜测Blog:是一个变量,而且:Application是不变的。

不, BlogApplication都是常量, ::是范围解析运算符。 它可以用来访问嵌套的常量,例如:

module Foo
  class Bar
    BAZ = 123
  end
end

Foo::Bar::BAZ #=> 123

我是新来的红宝石,并同时轨道。 我觉得Rails是最好的API之一,而且ruby是相当独特的,看来ruby可以巧妙地做“假设”来帮助开发者。 但是我不太确定延期。

我的问题是关于变量冒号。
到目前为止我所了解的是 ruby中的变量 ,就是说这个变量将不能改变,这与其他语言中的常量相似。 我对么??

那么我的困惑是,有时候我会看到变量的结肠前面,像这样

 Rails.application.config.session_store :cookie_store, 
      key: '_blog_session'
  <%= link_to "Delete", article, confirm: "Are you sure?", 
      method: :delete %>

关键:方法:前面有冒号,这代表什么? 而且

Blog::Application.routes.draw.do
  root :to => "articles#index"
end

变量之间有两个冒号? 现在我猜测Blog:是一个变量,而且:Application是不变的。 我怀疑它是什么,因为它没有任何意义。 请赐教?

谢谢


Rails.application.config.session_store :cookie_store, key: '_blog_session'

session_store是一个需要两个“参数”的方法:

  • :cookie_store是一个符号
  • 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 }哈希where confirm:method::delete符号再次。

Blog::Application ::基本上是一个名称空间解析运算符。Blog模块中解决Application类的一种方法。

希望这可以帮助。 看看我引用的文档,这是很好的解释。





colon