我正在做这样的事情:
myarray.delete_if{ |x|
#some code
case x
when "something"
return true
when "something else"
return false
end
“return”语句似乎是错误的,我无法弄清楚正确的语法,我理解简单形式的:myarray.delete_if{ |x| x == y }
,但不是当我想要返回true / false时更像是程序性的案例陈述的例子。
答案 0 :(得分:4)
只需删除return
即可。在Ruby中,最后评估的值用作返回值。
myarray = ["something", "something else", "something"]
myarray.delete_if { |x|
#some code
case x
when "something"
true
when "something else"
false
end
}
myarray # => ["something else"]
如果您想要明确,可以使用next
。
答案 1 :(得分:1)
您无需特别调整false
个案例。如果不对它们进行条件限制,它们默认为nil
。
myarray.delete_if do |x|
...
case x
when "something" then true
end
end
甚至更好:
myarray.delete_if do |x|
...
"something" === x
end
我不知道你在...
部分有什么,但如果你只想从数组中删除某个元素,你可以这样做:
myarray.delete("something")
如果你想取回接收器,那么:
myarray.tap{|a| a.delete("something")}