If I have a method with a case statement like this:
def output(p1, p2, p3)
prompt(
case
when counts[:p1] == 5 then "P1 won this game!!"
when counts[:p2] == 5 then "P2 won this game!"
when win?(p1, p3) then "P3 won this round!"
when win?(p2, p1) then "P2 won this round! You loose!"
else "It's a tie on this round! No one wins!"
end
)
end
Well @MatthewMatt the good thing about Ruby is it evaluates everything to Object, So at the end your case statement no matter how advanced it is, will result in a an object being passed as parameter to the prompt() procedure.
Ruby decides which result to pass as an object depending on which instruction line is executed last (at which when clause).
In that code snippet the Case block is given as Parameter, or in fact to be more specific as @jms said. The case resulting object value is used as Parameter for your prompt() method.
Though i am not quite sure, i know what you meant by that question?!
Should we name the Case?
Hmm… I don’t think it can be named anything else other than “case”, as Python unfinished docs do not really call it anything specific, and I can’t see why they should.
The way case syntax is formatted not the way it’s passed to prompt()
In case that’s what you meant I see your Case statement is parameter-less. Which is similar to multiple If/else statements. And it’s completely fine & supported starting from Ruby version 1.9+.
Resulting Value
The case statement you presented, will always result in a String being passed as parameter to the prompt() method.
_If this doesn't help; I really which you can present more information, and maybe clarify your question/intention a bit._