gpt4 book ai didi

ruby - `&&=` 快捷方式是什么?

转载 作者:太空宇宙 更新时间:2023-11-03 17:06:16 25 4
gpt4 key购买 nike

我看到了这段代码:

resource = controller_name.singularize.to_sym
method = "#{resource}_params"
params[resource] &&= send(method) if respond_to?(method, true)

但是我真的不明白&&=是做什么的。

有人能给我解释一下吗?

谢谢

最佳答案

快捷键

如 Marek 的 answer 中所述, a &&= ba = a && b 的快捷方式,就像:

  • a ||= ba = a || b
  • a += 1a = a + 1

含义

a = a && b 基本上意味着:仅当 a 已定义且为真时,才将 a 设置为 b .

备选方案

&& 有时可以 be used instead of an if .因为无论如何都有一个if,你也可以这样写:

resource = controller_name.singularize.to_sym
method = "#{resource}_params"
if respond_to?(method, true)
if params[resource]
params[resource] = send(method)
end
end

或更短:

resource = controller_name.singularize.to_sym
method = "#{resource}_params"
if respond_to?(method, true) && params[resource]
params[resource] = send(method)
end

resource = controller_name.singularize.to_sym
method = "#{resource}_params"
params[resource] = send(method) if respond_to?(method, true) && params[resource]

陷阱

a 未定义时,有一点不同:

a &&= b 会将 a 设置为 nil

但是

if a
a = b
end

将因 NameError 而失败。

关于ruby - `&&=` 快捷方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56629035/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com