I'm just asking because I've never seen the colon used before.
This is a shortcut for
if user.id == recipient_id ? then sender
else recipient
end
What comes before the ? is the condition (not to confuse with the ? which ends
the name of predicate methods: array.empty? do_something : do_something_else
won't work, array.empty? ? do_something : do_something_else will), after
the ? and before the : there's the action to take if the condition is true
and after the : what to do if it's false.
Looks like a ternary operator (you know binary and unary operators, this is the only ternary I've ever seen)
exists in C and C like languages such as PHP
one of the less lovely things to read in C like languages, but after you get used to it, it is actally a space saver.
It is relly just an conditional with two possible outcomes
Looks llike the code first checks to see if the user exists, if the user doesn't exist, you get an error message of some sort.
after that, user.id is compared to recipient_id
if they're the same, sender, else recipient
what it's for? who knows.
some kind of validation and direction.
···
On Mar 15, 2007, at 11:50 PM, jko170 wrote:
Looking at this piece of code, what does the colon do?
def partner_to(user)
raise ArgumentError unless user
user.id == recipient_id ? sender : recipient
end
John Joyce wrote:
> one of the less lovely things to read in C like languages, but after
you get used to it, it is actally a space saver.
It is relly just an conditional with two possible outcomes
In C the ?: operator is useful when writing macros since it's an
expression, as opposed to if/then, which is a statement. (Unlike Ruby.)
The ?: operator has been terribly abused, though, by people who believe
that you can make a program run faster by taking out whitespace.
I'm just asking because I've never seen the colon used before.
This is a shortcut for
if user.id == recipient_id ? then sender
else recipient
end
You got a question mark too much in there.
What comes before the ? is the condition (not to confuse with the ? which ends the name of predicate methods: array.empty? do_something : do_something_else won't work, array.empty? ? do_something : do_something_else will), after the ? and before the : there's the action to take if the condition is true and after the : what to do if it's false.
like I said it is often a difficult to read, not good choice.
It is better to just type a little bit more and make a proper conditional construct in most cases.
John Joyce wrote:
> one of the less lovely things to read in C like languages, but after
you get used to it, it is actally a space saver.
It is relly just an conditional with two possible outcomes
In C the ?: operator is useful when writing macros since it's an
expression, as opposed to if/then, which is a statement. (Unlike
Ruby.) The ?: operator has been terribly abused, though, by people
who believe that you can make a program run faster by taking out
whitespace.
In effect, you are saying that ?: is the wrong way to fix a defect in
the language.