4 ms·
Interestingly, assignment inside conditionals is usually avoided because it is easy to accidentally do an assignment (=) rather than a comparison (==). Note tha
by psyklic 10y ago
Interestingly, assignment inside conditionals is usually avoided because it is easy to accidentally do an assignment (=) rather than a comparison (==). Note that for multiple assignment this mistake can no longer happen:
irb(main): a, b == 3
SyntaxError: syntax error, unexpected ==, expecting '='
Should it still be avoided? :)
- jbackus 10y agoFirst of all that is an interesting point. Given that it isn't as potentially dangerous I'll agree that it is less bad than I initially thought. I'll respond to your question by asking you a question. Which of the following expressions evaluate to "truthy"? 'truthy' if (a, b = []) # => 'truthy' if (a, b = nil) # => 'truthy' if (a, b = [nil]) # => 'truthy' if (a, b = [nil, nil]) # => 'truthy' if (a, b = [false]) # => 'truthy' if (a, b = [false, false]) # => 'truthy' if (a, b = [true, false]) # => 'truthy' if (a, b = [false, true]) # => 'truthy' if (a, b = *[]) # => 'truthy' if (a, b = *nil) # => 'truthy' if (a, b = *[nil]) # => 'truthy' if (a, b = *[nil, nil]) # => 'truthy' if (a, b = *[false]) # => 'truthy' if (a, b = *[false, false]) # => 'truthy' if (a, b = *[true, false]) # => 'truthy' if (a, b = *[false, true]) # => The answer is in this gist: https://gist.github.com/backus/c9b70dee67470698fd7d4a66ddf0384b https://gist.github.com/backus/c9b70dee67470698fd7d4a66ddf03.... Don't peek!
- psyklic 10y agoGood exercise! So it may still be too easy to misunderstand when exactly the condition will be true.