ruby on rails - create - ¿Hay un opuesto de incluir? para Ruby Arrays?
ruby create array (9)
Tengo la siguiente lógica en mi código:
if [email protected]?(p.name) do
...
end
@players
es una matriz. ¿Hay algún método para poder evitarlo !
?
Idealmente, este fragmento sería:
if @players.does_not_include?(p.name) do
...
end
Mirando a Ruby solamente
El método Enumerable#none?
se puede usar de la manera requerida cuando se usa con una comparación simple ==
en el bloque.
player = [1, 2, 3]
player.none? { |n| n == 7 } #=> true
!player.include?(7) #=> true
¿Usar un argumento con none
como none?(7)
puede ser suficiente en muchos casos, pero tenga en cuenta que esto se usa ===
para comparar en lugar de include?
que usa ==
.
p.ej
player.none?(7) #=> true
player.none?(String) #=> true
¿Qué tal lo siguiente?
unless @players.include?(p.name)
....
end
Aqui tienes:
unless @players.include?(p.name)
...
end
Puede echar un vistazo a la Guía de Ruby Style para obtener más información sobre técnicas similares.
Prueba esto, es Ruby puro así que no hay necesidad de agregar ningún marco periférico
if @players.include?(p.name) == false do
...
end
Estuve luchando con una lógica similar durante unos días, y después de revisar varios foros y paneles de preguntas y respuestas con poco resultado, resultó que la solución era bastante simple.
Pruebe algo como esto:
@players.include?(p.name) ? false : true
Usar a unless
esté bien para las declaraciones con single include?
cláusulas pero, por ejemplo, cuando necesita verificar la inclusión de algo en una Array
pero no en otra, el uso de include?
con exclude?
es mucho más amigable.
if @players.include? && @spectators.exclude? do
....
end
Pero como dizzy42 dice más arriba, ¿el uso de exclude?
requiere ActiveSupport
Usar a menos que
unless @players.include?(p.name) do
...
end
if @players.exclude?(p.name) do
...
end
ActiveSupport agrega la exclude?
método para Array
y String
. Esto no es puro Ruby, pero es usado por MUCHOS rubyistas.
module Enumerable
def does_not_include?(item)
!include?(item)
end
end
Ok, pero en serio, a menos que funcione bien.