Что такое знак # (sharp, number, pound, hash), используемый для Ruby?

Каковы различные значения символа Ruby sharp/number/pound/hash (#)

Сколько контекстов имеет символ # в Ruby?

Я знаю, что # `представляет комментарий

# a comment

или 'convert to value':

i = 1
print "#{i}" # simple example

Однако я также вижу, что некоторые документы Ruby описывают встроенные методы, подобные этим:

Array#fill
File::file?

Почему они описывают одно и то же, используя 2 разных символа? Я новичок в Ruby. Спасибо

Ответы

Ответ 1

Вот как описывается метод instance:

Array#fill 

Итак, вы можете:

a = Array.new(2)
 => [nil, nil]
a.fill(42)
 => [42, 42]

Вот как описывается метод class:

String::new

s = String.new('abc')
 => "abc"

Ответ 2

В Perl # используется для комментирования, а поскольку Perl является "предком" Ruby, роль переносится.

Синтаксис "#{}" называется "интерполяцией", и фунт был выбран наиболее вероятно, потому что интерполяция аналогична в некотором смысле комментированию, потому что вы меняете контекст своего кода (в этом случае для другого контекста для выполнения)

#, следующее за именем класса, просто означает, что следующий идентификатор - это метод этого класса, и это просто соглашение. Подробнее об этом здесь: Почему методы в документации Ruby предшествуют знаку хеша?

Ответ 3

Просто, чтобы показать вам в качестве примера, что Ruby показывает метод экземпляра, которому предшествует символ # и методы класса, которым предшествует символ ..

class Foo
  def self.foo;end
  def bar;end
end

p Foo.method(:foo) # => #<Method: Foo.foo>
p Foo.new.method(:bar) # => #<Method: Foo#bar>

Ответ 4

Интересен ::, он действует аналогично ., поскольку вы можете вызывать методы через оба

Car::is_hybrid?

и

car.is_hybrid?

Как вы увидите в большинстве программ, хотя . является предпочтительным для методов.

Чаще всего предпочтительным является ::, где у вас есть константа в классе, и вы увидите это в системных вызовах, таких как Math::PI или те, которые вы создаете, например. ThePentagon::NUMBER_OF_BUILDING_SIDES