Ruby on rails 在RubyonRails中简化赋值

Ruby on rails 在RubyonRails中简化赋值,ruby-on-rails,ruby,Ruby On Rails,Ruby,我只想将变量B的值分配给变量A,前提是B不是nil。 我想尽量简化代码。 所以我找到了那个 A = B if B 但是变量名很长,例如数据[:Symbol1][:Symbol2]…,无论如何相同的变量名是重复的 有人能帮我简化这段代码吗?你可以试试这个方法 你的代码看起来像 A = B.presence 正在运行的it示例: [1] pry(main)> b = nil => nil [2] pry(main)> a = b.presence => nil [3] p

我只想将变量
B
的值分配给变量
A
,前提是
B
不是
nil
。 我想尽量简化代码。 所以我找到了那个

A = B if B
但是变量名很长,例如
数据[:Symbol1][:Symbol2]…
,无论如何相同的变量名是重复的

有人能帮我简化这段代码吗?

你可以试试这个方法

你的代码看起来像

A = B.presence
正在运行的it示例:

[1] pry(main)> b = nil
=> nil
[2] pry(main)> a = b.presence
=> nil
[3] pry(main)> a
=> nil
[4] pry(main)> b = 'foo'
=> "foo"
[5] pry(main)> a = b.presence
=> "foo"
[6] pry(main)> a
=> "foo"

我想你需要
A=B | | A

|
运算符计算并返回第一个非假操作数。如果B为“”,它将返回B(并将其分配给A)。如果B为false,则A将被分配自身。

两种简单方法:

a=b.presence | | a

a=b|a

没有完全清除重复名称的部分,请举例说明。试试
a=b | | a
。如果
a=:something
你把a变成
nil
。这就是
a=b
?在哪个版本的ruby中工作?b、 presence给出错误presence未在nil:NilClass中定义。@Romeo,
require'rails'
require'active\u support/core\u ext/object'
@Romeo您的标题说您正在使用Ruby-on-rails,所以我给出了一个特定于rails的解决方案。