Ruby on rails 导致混淆的方法语法
1) 我对def current\u user=(user)最为困惑。这是干什么用的。我看到它将用户对象作为参数,但是=符号的意义是什么 2) 不确定为什么在记住标记前面有一个*。有人能解释一下吗Ruby on rails 导致混淆的方法语法,ruby-on-rails,ruby,Ruby On Rails,Ruby,1) 我对def current\u user=(user)最为困惑。这是干什么用的。我看到它将用户对象作为参数,但是=符号的意义是什么 2) 不确定为什么在记住标记前面有一个*。有人能解释一下吗 感谢当前用户使用attr\u writer方法之前的=符号 这意味着 def current_user=(user) @current_user = user end def user_from_remember_token User.authenticate_with_salt(*
感谢当前用户使用attr\u writer方法之前的=符号 这意味着
def current_user=(user)
@current_user = user
end
def user_from_remember_token
User.authenticate_with_salt(*remember_token)
end
def remember_token
cookies.signed[:remember_token] || [nil, nil]
end
参考:
def current_user=(user)
@current_user = user
end
当前用户引用attr\u writer方法之前的=符号 这意味着
def current_user=(user)
@current_user = user
end
def user_from_remember_token
User.authenticate_with_salt(*remember_token)
end
def remember_token
cookies.signed[:remember_token] || [nil, nil]
end
参考:
def current_user=(user)
@current_user = user
end
current\u user=(user)
是一个setter,允许您执行操作。current\u user=foo
。相应的getter应该是当前用户
http://www.rubyist.net/~slagell/ruby/accessors.html
http://apidock.com/ruby/Module/attr_writer
http://ruby-doc.org/core/classes/Module.html
current\u user=(user)
是一个setter,允许您执行操作。current\u user=foo
。相应的getter应该是当前用户
http://www.rubyist.net/~slagell/ruby/accessors.html
http://apidock.com/ruby/Module/attr_writer
http://ruby-doc.org/core/classes/Module.html
方法名称末尾的
=
是一种语法糖,用于赋值的方法。由于括号在Ruby中是可选的,因此可以编写foo.current\u user=(bar)
或foo.current\u user=bar
。请注意,后者看起来更自然。还请注意,您可以使用attr\u writer:current\u user
您还可以使用?
和。按照惯例,前者表示要返回的布尔值,后者表示“危险”方法(例如,修改对象而不是返回副本的方法)
*
将传递给方法的内容包装到数组中。当调用一个方法,然后打开一个数组时,它也起作用
|
是简单的逻辑or;如果第一个操作数的计算结果为nil
或false
,则将返回另一个操作数。通常,您可能会发现foo | |=“bar”
,这意味着foo
将获得“bar”的值,除非它有一个值(foo=foo | |“bar”
)
Ruby是一种很棒的语言,有很多这样的怪癖。是一个值得访问的页面。方法名称末尾的=
是一个用于赋值方法的语法糖。由于括号在Ruby中是可选的,因此可以编写foo.current\u user=(bar)
或foo.current\u user=bar
。请注意,后者看起来更自然。还请注意,您可以使用attr\u writer:current\u user
您还可以使用?
和。按照惯例,前者表示要返回的布尔值,后者表示“危险”方法(例如,修改对象而不是返回副本的方法)
*
将传递给方法的内容包装到数组中。当调用一个方法,然后打开一个数组时,它也起作用
|
是简单的逻辑or;如果第一个操作数的计算结果为nil
或false
,则将返回另一个操作数。通常,您可能会发现foo | |=“bar”
,这意味着foo
将获得“bar”的值,除非它有一个值(foo=foo | |“bar”
)
Ruby是一种很棒的语言,有很多这样的怪癖。是一个值得访问的页面。TLDR版本=
?
在ruby中,代码>都只是方法名称中的合法字符。他们没什么特别的。约定在何时使用更重要。=
、?
和代码>可用于方法名称的末尾。虽然irb
在声明名为foo?bar
的方法时不会抱怨,但它会记住方法为foo?
。非常感谢,你真的回答了我的问题!还是习惯了ruby。不过我听说了很多关于它的好东西:)这是一门很棒的语言,很容易学。有一本关于Ruby的好书。我强烈建议您阅读它(这个链接记录了Ruby 1.6,现在已经有些过时了;但是您周围的书店应该有它的最新版本)在ruby中,代码>都只是方法名称中的合法字符。他们没什么特别的。约定在何时使用更重要。=
、?
和代码>可用于方法名称的末尾。虽然irb
在声明名为foo?bar
的方法时不会抱怨,但它会记住方法为foo?
。非常感谢,你真的回答了我的问题!还是习惯了ruby。不过我听说了很多关于它的好东西:)这是一门很棒的语言,很容易学。有一本关于Ruby的好书。我极力推荐阅读它(链接文档是Ruby 1.6,现在已经有些过时了;但是你周围的书店应该有它的最新版本)。