Нужно ли мне напрямую звонить в класс Math? - PullRequest
1 голос
/ 19 марта 2011

Если я использую функцию из математического модуля, такую ​​как log10, нужно ли мне вызывать Math.log10(number) или можно сделать number.log10?

Ответы [ 2 ]

2 голосов
/ 19 марта 2011

Почему бы вам просто не попробовать, например, использовать irb? или только эта командная строка:

ruby -e 'puts Math.log10(10)'

1,0

ruby -e 'log10(10)'

-e: 1: in <main>': undefined method log10 'для main: Object (NoMethodError)

Полагаю, у вас есть ответ:)

Кстати, вы можете включить модуль Math:

include Math

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

 ruby -e 'include Math; puts log10(10)'
  => 1.0
2 голосов
/ 19 марта 2011

Числа не имеют метода log10, доступного по умолчанию, но вы можете расширить класс Numeric, чтобы добавить эту функциональность:

class Numeric

  def log10
    Math.log10 self
  end
end

10.log10
=> 1.0

Если вы просто хотите использовать методы без необходимости писать Math все время, вы можете include Math, тогда вы можете вызвать log10 напрямую:

class YourClass
  include Math

  def method n
    log10 n
  end
end

YourClass.new.method 10
=> 1.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...