Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby Style/ConditionalAssignment:将条件的返回用于变量赋值和比较_Ruby_Variable Assignment_Conditional Operator_Rubocop - Fatal编程技术网

Ruby Style/ConditionalAssignment:将条件的返回用于变量赋值和比较

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

下面是我的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_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>>