0Day Forums
Checking if a variable is not nil and not zero in ruby - Printable Version

+- 0Day Forums (https://0day.red)
+-- Forum: Coding (https://0day.red/Forum-Coding)
+--- Forum: Ruby (https://0day.red/Forum-Ruby)
+--- Thread: Checking if a variable is not nil and not zero in ruby (/Thread-Checking-if-a-variable-is-not-nil-and-not-zero-in-ruby)

Pages: 1 2


Checking if a variable is not nil and not zero in ruby - regardance959219 - 07-18-2023

I am using the following code to check if a variable is not nil and not zero

if(discount != nil && discount != 0)
...
end

Is there a better way to do this?


RE: Checking if a variable is not nil and not zero in ruby - clemmieipqdf - 07-18-2023

You could initialize discount to 0 as long as your code is guaranteed not to try and use it before it is initialized. That would remove one check I suppose, I can't think of anything else.


RE: Checking if a variable is not nil and not zero in ruby - plausibleness289598 - 07-18-2023

You could do this:

if (!discount.nil? && !discount.zero?)

The order is important here, because if `discount` is `nil`, then it will not have a `zero?` method. Ruby's short-circuit evaluation should prevent it from trying to evaluate `discount.zero?`, however, if `discount` is `nil`.


RE: Checking if a variable is not nil and not zero in ruby - Drlacker1 - 07-18-2023

<pre><code>
unless [nil, 0].include?(discount)
# ...
end
<code></pre>


RE: Checking if a variable is not nil and not zero in ruby - marcin - 07-18-2023

class Object
def nil_zero?
self.nil? || self == 0
end
end

# which lets you do
nil.nil_zero? # returns true
0.nil_zero? # returns true
1.nil_zero? # returns false
"a".nil_zero? # returns false

unless discount.nil_zero?
# do stuff...
end

Beware of the usual disclaimers... great power/responsibility, monkey patching leading to the dark side etc.


RE: Checking if a variable is not nil and not zero in ruby - strewage158668 - 07-18-2023

if (discount||0) != 0
#...
end


RE: Checking if a variable is not nil and not zero in ruby - raff210 - 07-18-2023

I believe the following is good enough for ruby code. I don't think I could write a unit test that shows any difference between this and the original.

if discount != 0
end



RE: Checking if a variable is not nil and not zero in ruby - flaunt80432 - 07-18-2023

if discount and discount != 0
..
end

update, it will `false` for `discount = false`


RE: Checking if a variable is not nil and not zero in ruby - vegetation177921 - 07-18-2023

<pre><code>
unless discount.nil? || discount == 0
# ...
end
<code></pre>



RE: Checking if a variable is not nil and not zero in ruby - orthosite900631 - 07-18-2023

You can convert your empty row to integer value and check zero?.

"".to_i.zero? => true
nil.to_i.zero? => true