I’m sure theres a way, so how does one do:
if (a = b or a = c or a = d or a = f)
in a shorter, easier to view
if (a = (b c d or f)) kind of way?
I’m sure theres a way, so how does one do:
if (a = b or a = c or a = d or a = f)
in a shorter, easier to view
if (a = (b c d or f)) kind of way?
Hi –
On Fri, 27 Jul 2007, Brett B. wrote:
I’m sure theres a way, so how does one do:
if (a = b or a = c or a = d or a = f)
in a shorter, easier to view
if (a = (b c d or f)) kind of way?
You mean == rather than = , but in any case, try this:
if [b,c,d,f].include?(a)
David
== indeed.
That’s gorgeous, thanks! Works brilliantly.
On Jul 26, 4:22 pm, Brett B. [email protected] wrote:
I’m sure theres a way, so how does one do:
if (a = b or a = c or a = d or a = f)
in a shorter, easier to view
if (a = (b c d or f)) kind of way?
case n
when 1,2,3: puts ‘1-3’
when 4…6: puts ‘4-6’
else puts ‘other’
end
You can, of course, use variables instead of literals, ala
case a
when b, c, d, f
…
end
Hi –
On Fri, 27 Jul 2007, Phrogz wrote:
when 1,2,3: puts ‘1-3’
when 4…6: puts ‘4-6’
else puts ‘other’
endYou can, of course, use variables instead of literals, ala
case a
when b, c, d, f
…
end
That doesn’t test for equality, though.
David
On 7/27/07, [email protected] [email protected] wrote:
if (a = (b c d or f)) kind of way?
You mean == rather than = , but in any case, try this:
if [b,c,d,f].include?(a)
You are right for sure that OP meant ==, but let us answer the
original question too
a = [b,c,d,e,f].compact.first
Robert
Robert D. wrote:
You are right for sure that OP meant ==, but let us answer the
original question tooa = [b,c,d,e,f].compact.first
Not quite.
b=c=d=false
e=f = 99
a1 = [b,c,d,e,f].compact.first
a2=b or a2=c or a2=d or a2=e or a2=f
puts a1, a2
a1 is false and a2 is 99
Ian
On Behalf Of Brett B.:
also take a look at #any? and #all?
they come in handy in situations like,
if a < b or a < c or a < d
if a > b and a > c and a > d
sometimes, you may want a reverse to #include? behavior so that you’d
like to emphasize first the element as compared to the collection.
something like,
a.in?[b,c,d,f]
kind regards -botp
On Jul 26, 5:38 pm, [email protected] wrote:
else puts ‘other’
end
That doesn’t test for equality, though.
An important semantic point. For example:
case 1…3
when 1…3: puts ‘yay!’
else puts ‘boo’
end
results in “boo”, because (1…3) === (1…3) #=> false
Still, as the docs for Object#=== say:
“For class Object, effectively the same as calling #==, but typically
overridden by descendants to provide meaningful semantics in case
statements.”
Numbers, strings, arrays, hashes, booleans…all these treat === as
==. I’m not arguing that they should be treated the same, or that we
should sweep the difference under the rug. I’m simply suggesting that
if you know the difference between #== and #===, particularly on the
objects that you place in your case statements, then under many
circumstances you can use a case statement as a convenience for
checking equality on many objects at once.
(Not that there was anything wrong with your initial suggestion of
Array#any?, of course.)
On Jul 27, 4:43 am, “Robert D.” [email protected] wrote:
On 7/27/07, [email protected] [email protected] wrote:
On Fri, 27 Jul 2007, Brett B. wrote:
if (a = b or a = c or a = d or a = f)
You mean == rather than = , but in any case, try this:
You are right for sure that OP meant ==, but let us answer the
original question tooa = [b,c,d,e,f].compact.first
Your solution forces the evaluation of b/c/d/e/f, which the OP’s does
not (thanks to the miracle of short-circuit boolean evaluation). I
think the ‘correct’ answer to the typo-incorrect question is:
if a = (b or c or d or f)
To be super clear: this is only because we’re talking about assignment
instead of an actual equality test.
On 7/27/07, Ian W. [email protected] wrote:
Robert D. wrote:
You are right for sure that OP meant ==, but let us answer the
original question tooa = [b,c,d,e,f].compact.first
Not quite.
b=c=d=false
indeed well,spotted, same trap than in
x ||= 42
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.
Sponsor our Newsletter | Privacy Policy | Terms of Service | Remote Ruby Jobs