我正在使用ruby过滤数组并使用.select
块来执行此操作.条件足够复杂,单个行块是可怕的,但不是那么大,所以一个单独的方法似乎有点矫枉过正.因此,我想使用多行块.但是我不确定语法.
filtered_array = base_array.select do |elem|
return false if condition1
return false if condition2
return true
end
Run Code Online (Sandbox Code Playgroud)
以上显然不正确,因为return
退出方法,而不是块,但给出了我正在寻找的想法.
我也可以使用多个select语句,但这似乎混淆了我想要做的事情.请注意,上述条件足够复杂,使用逻辑运算符绑定它们会导致混乱.
编辑:刚看到这个:"使用逻辑运算符绑定它们会导致混乱." 你能提供实际条件吗?
filtered_array = base_array.select do |elem|
condition1 && condition2
end
Run Code Online (Sandbox Code Playgroud)
你可能应该只使用:
next(true)
Run Code Online (Sandbox Code Playgroud)
但是,如果这不符合您的要求,请执行以下操作:
my_array.select do |x|
# bool = false ### optional, uncomment this if you prefer
if x.id == 1
bool = true
end
bool
end
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
12973 次 |
最近记录: |