Ruby Style/ConditionalAssignment:将条件的返回用于变量赋值和比较
下面是我的RubyonRails代码-Ruby Style/ConditionalAssignment:将条件的返回用于变量赋值和比较,ruby,variable-assignment,conditional-operator,rubocop,Ruby,Variable Assignment,Conditional Operator,Rubocop,下面是我的RubyonRails代码- inactive_list = [1,2,3,4,5] raw_data = [] data = { name: "Test", full_name: "Test data" } if inactive_list.include? <<id of data>> data[:active] = false else data[:active] = true end raw_d
inactive_list = [1,2,3,4,5]
raw_data = []
data = {
name: "Test",
full_name: "Test data"
}
if inactive_list.include? <<id of data>>
data[:active] = false
else
data[:active] = true
end
raw_data << data
而不是
if inactive_list.include? <<id of data>>
data[:active] = false
else
data[:active] = true
end
完整示例:
data = {
name: "Test",
full_name: "Test data",
active: inactive_list.exclude?(<<id of data>>)
}
数据={
名称:“测试”,
全名:“测试数据”,
活动:非活动列表。排除?()
}
一般来说,风格/条件签署
rubocop规则(cop)要求您更改这两个重复的分配:
if condition
variable = value1
else
variable = value2
end
对于单个条件赋值:
variable = if condition
value1
else
value2
end
在您的情况下,Rubocop要求的最小更改是:
if inactive_list.include? <<id of data>>
data[:active] = false
else
data[:active] = true
end
另请参见: 数组
包含?
方法:
RuboCop::Cop::Style::ConditionalAssignment
:
检查if和case语句,其中每个分支在使用条件返回时用于赋值给同一个变量。可以改用。
exclude?
不是ruby语言,因此可能需要添加一个注释,以供将来的读者使用。谢谢您的回答!直接使用active:inactive\u list.exclude?()
是处理逻辑的非常优雅的方式!非常感谢您的详细解释!
if condition
variable = value1
else
variable = value2
end
variable = if condition
value1
else
value2
end
if inactive_list.include? <<id of data>>
data[:active] = false
else
data[:active] = true
end
data[:active] = if inactive_list.include? <<id of data>>
false
else
true
end
data[:active] = !inactive_list.include? <<id of data>>