Форум — Development Вопрос новичка по Ruby 0 0 В некоторых языках есть такая замечательная штука: для проверки переменной на ноль/не ноль можно было написать if X... //X!=0 и if not X... или if !X... //X==0 в Руби это реализуемо без влезания во внутренности транслятора? Ссылка
В руби считаются истинными все значения, кроме nil и false, все числовые значения, включая 0 - истинны. Так что сравнивай с нулём. Teak ★★★★★ (30.01.07 15:27:27 MSK) Показать ответ Ссылка
Ответ на: комментарий от Teak 30.01.07 15:27:27 MSK irb(main):012:0> class Fixnum; def t?; self!=0; end; end => nil irb(main):013:0> 5.t? => true irb(main):014:0> 0.t? => false irb(main):015:0> Подойдёт? :) Teak ★★★★★ (30.01.07 15:46:26 MSK) Показать ответ Ссылка
Ответ на: комментарий от Teak 30.01.07 15:46:26 MSK А лучше вот так: module CompareWithZero def t? self!=0 end end class Fixnum; include CompareWithZero; end class Bignum; include CompareWithZero; end class Float; include CompareWithZero; end Teak ★★★★★ (30.01.07 15:54:28 MSK) Показать ответ Ссылка
Ответ на: комментарий от Teak 30.01.07 15:54:28 MSK Лисопед изобретаете ? :) print "zero\n" if a.zero? anonymous (30.01.07 18:27:17 MSK) Показать ответ Ссылка
Ответ на: комментарий от anonymous 30.01.07 18:27:17 MSK Ух ты, точно. :) Ну вот... :) Teak ★★★★★ (30.01.07 18:59:09 MSK) Показать ответ Ссылка
Ответ на: комментарий от Teak 30.01.07 18:59:09 MSK >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 (30.01.07 22:32:51 MSK) Показать ответ Ссылка
Ответ на: комментарий от anonymous 30.01.07 22:32:51 MSK Хороший тред, спасибо. :) Teak ★★★★★ (30.01.07 22:45:57 MSK) Ссылка