我在我的代码中有以下逻辑:
if !@players.include?(p.name)
...
end
@players是一个数组。有什么方法可以让我避免!?
理想情况下,这个代码片段应该是:
if @players.does_not_include?(p.name)
...
end
我在我的代码中有以下逻辑:
if !@players.include?(p.name)
...
end
@players是一个数组。有什么方法可以让我避免!?
理想情况下,这个代码片段应该是:
if @players.does_not_include?(p.name)
...
end
当前回答
使用,除非:
unless @players.include?(p.name) do
...
end
其他回答
if @players.exclude?(p.name)
...
end
ActiveSupport添加排除?数组,散列和字符串。这不是纯Ruby,但是被很多Ruby爱好者使用。
来源:活动支持核心扩展(Rails指南)
试试这样做:
@players.include?(p.name) ? false : true
这不是一个单一的方法,但链接计数和零工作:
[1, 2, 3].count(1).zero? # => false
[1, 2, 3].count(4).zero? # => true
它也适用于字符串:
"hello".count("l").zero? # => false
"hello".count("q").zero? # => true
试试这个,它是纯Ruby,所以不需要添加任何外围框架
if @players.include?(p.name) == false do
...
end
我在类似的逻辑中挣扎了几天,在查看了几个论坛和问答板后,结果发现解决方案实际上非常简单。
使用,除非:
unless @players.include?(p.name) do
...
end