LINUX.ORG.RU

Вопрос новичка по Ruby


0

0

В некоторых языках есть такая замечательная штука: для проверки переменной на ноль/не ноль можно было написать

if X... //X!=0

и

if not X... или if !X... //X==0

в Руби это реализуемо без влезания во внутренности транслятора?

В руби считаются истинными все значения, кроме nil и false, все числовые значения, включая 0 - истинны. Так что сравнивай с нулём.

Teak ★★★★★
()
Ответ на: комментарий от Teak

А лучше вот так:

module CompareWithZero
 def t?
  self!=0
 end
end
class Fixnum; include CompareWithZero; end
class Bignum; include CompareWithZero; end
class Float; include CompareWithZero; end

Teak ★★★★★
()
Ответ на: комментарий от Teak

>module CompareWithZero
> def t?
>  self!=0
> end
>end
>class Fixnum; include CompareWithZero; end
>class Bignum; include CompareWithZero; end
>class Float; include CompareWithZero; end

Тут можно воспользоваться преимуществом наследованиея:

irb(main):001:0> class Numeric
irb(main):002:1> def t?;self!=0;end
irb(main):003:1> end
=> nil
irb(main):004:0> require 'complex'
=> true
irb(main):005:0> Complex(0,0).t?
=> false
irb(main):006:0> Complex(0,1).t?
=> true
irb(main):007:0> 0.t?
=> false
irb(main):008:0> 1.t?
=> true

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.