I want to test whether a
equals 1 or 2
I could do
a == 1 || a == 2
but this requires repeating a
(which would be annoying for longer variables)
I'd like to do something like a == (1 || 2)
, but obviously this won't work
I could do [1, 2].include?(a)
, which is not bad, but strikes me as a bit harder to read
Just wondering how do to this with idiomatic ruby
To check if a variable is equal to one of multiple values, add the values to an array and use the includes() method on the array. The includes method returns true if the provided value is contained in the array.
Use the strict equality (===) operator to check if a variable is equal to true - myVar === true . The strict equality operator will return true if the variable is equal to true , otherwise it will return false .
Using the != The most direct way to determine if two values are not equal in Python is to use the != operator (Note: There should not be any space between ! and = ). The != operator returns True if the values on both sides of the operator are not equal to each other.
if x == 1 or y == 1 or z == 1: x and y are otherwise evaluated on their own ( False if 0 , True otherwise). You can shorten that using a containment test against a tuple: if 1 in (x, y, z):
Your first method is idiomatic Ruby. Unfortunately Ruby doesn't have an equivalent of Python's a in [1,2]
, which I think would be nicer. Your [1,2].include? a
is the nearest alternative, and I think it's a little backwards from the most natural way.
Of course, if you use this a lot, you could do this:
class Object def member_of? container container.include? self end end
and then you can do a.member_of? [1, 2]
.
I don't know in what context you're using this in, but if it fits into a switch statement you can do:
a = 1 case a when 1, 2 puts a end
Some other benefits is that when uses the case equality === operator, so if you want, you can override that method for different behavior. Another, is that you can also use ranges with it too if that meets your use case:
when 1..5, 7, 10
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With