是否有包含的对立面? 对于Rubyarrays?
我的代码中有以下逻辑:
if !@players.include?(p.name) do ... end
@players
是一个数组。 有没有一种方法,所以我可以避免!
?
理想情况下,这个片段将是:
if @players.does_not_include?(p.name) do ... end
if @players.exclude?(p.name) do ... end
ActiveSupport添加exclude?
方法到Array
和String
。 这不是纯粹的Ruby,而是被大量的ruby使用者所使用。
干得好:
unless @players.include?(p.name) ... end
你可能会看看Ruby风格指南了解更多类似技术的信息。
module Enumerable def does_not_include?(item) !include?(item) end end
好的,但是,严格的,除非工作正常。
怎么样:
unless @players.include?(p.name) do .... end
除非使用。
unless @players.include?(p.name) do ... end
使用unless
包含单个语句的罚款include?
子句,但是,例如,当你需要检查一个Array
包含的东西,而不是在另一个,使用include?
exclude?
更友好。
if @players.include? && @spectators.exclude? do .... end
但是正如上面的dizzy42所说,使用exclude?
需要ActiveSupport
尝试这样的事情:
@players.include?(p.name) ? false : true
试试这个,它是纯粹的Ruby,所以不需要添加任何外围框架
if @players.include?(p.name) == false do ... end
我在一个类似的逻辑上挣扎了好几天,在检查了几个论坛和问答板之后,结果很简单。