问题描述
我有一些正在修改的继承代码.但是,我看到了一些奇怪的东西(对我来说).
I have some inherited code that I am modifying. However, I am seeing something strange(to me).
我看到一些这样的代码:
I see some code like this:
::User.find_by_email(params[:user][:email]).update_attributes(:mag => 1)
我从未见过这样的东西(我是 Ruby on Rails 的新手).这有什么作用,为什么我的 User.find_by_email(params[:user][:email]).update_attributes(:mag => 1)
不起作用?该错误说明了有关 User
常量的内容.
I have never seen something like this(I am new to Ruby on Rails). What does this do and why doesn't my User.find_by_email(params[:user][:email]).update_attributes(:mag => 1)
work? The error says something about the User
constant.
如果有帮助,我正在使用 Rails 2.3.5.
I am using Rails 2.3.5 if that helps.
推荐答案
::
是一个作用域解析操作符,它有效的意思是在命名空间中",所以 ActiveRecord::Base
的意思是Base
,在ActiveRecord
"的命名空间中
::
is a scope resolution operator, it effectively means "in the namespace", so ActiveRecord::Base
means "Base
, in the namespace of ActiveRecord
"
在任何命名空间之外解析的常量意味着它听起来就像一个常量 - 一个根本不在任何命名空间中的常量.
A constant being resolved outside of any namespace means exactly what it sounds like - a constant not in any namespace at all.
在没有它的情况下代码可能不明确的地方使用它:
It's used in places where code may be ambiguous without it:
module Document
class Table # Represents a data table
def setup
Table # Refers to the Document::Table class
::Table # Refers to the furniture class
end
end
end
class Table # Represents furniture
end
这篇关于:: 有什么作用?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!