2013-09-03 16 views
17

Ruby'de kullanılan # (keskin, sayı, pound, hash) işareti nedir?

Ruby sembol # kaç bağlamlar var Yakut keskin/sayı işareti/kiloluk/karma (#) sembolün çeşitli anlamları nelerdir?

Ben # ` 'değerine dönüştürmek' yolla

# a comment 

temsil veya biliyoruz:

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

Ayrıca bazı Yakut dokümanlar yerleşik açıklar bu gibi yöntemlerle bkz Ancak :

Array#fill 
File::file? 

Neden? Aynı şeyi 2 farklı sembol kullanarak açıklıyorlar mı? Ruby'de yeni. Teşekkürler

+7

Sorunuzun ikinci kısmı için: # # bir örnek yöntemini gösterir ve '::' bir sınıf yöntemini gösterir. –

cevap

10

Bu örneği yöntem açıklıyordu:

Array#fill 

Yani yapabilirsiniz: Bu sınıf yöntem tarif nasıl

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

geçerli:

String::new 

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

Perl'de #, yorum yapmak için kullanılır ve Perl Ruby'nin bir "atası" olduğu için rol devredilmiştir.

"#{}" sözdizimi 'enterpolasyon' denir ve enterpolasyon yorumlama bir anlamda benzer olduğu için

(yürütülmesi için başka bir bağlamda bu durumda) kod bağlamını değişiyor çünkü kiloluk, büyük olasılıkla seçildi

Bir Sınıf adını takip eden # sadece aşağıdaki tanımlayıcının bu Sınıfın bir yöntemi olduğunu ve yalnızca bir sözleşmeyi ifade ettiğini gösterir. Burada bu konuda daha fazla bilgi: Why are methods in Ruby documentation preceded by a hash sign?

1

Size örnek olarak göstermeniz için, Ruby'nin # sembolü ile önceliği olan örnek yöntemini ve . sembolü ile öncelenen sınıf yöntemlerini gösterir.

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> 
1

:: Eğer aracılığıyla yöntemleri çağırabilir içinde . benzer davranır, ilginç hem

Car::is_hybrid? 

ve

car.is_hybrid? 

Eğer . olsa en kodda göreceğiniz üzere yöntemler için tercih edilir.

::'un sıklıkla tercih edildiği bir durum, sınıfta sabit olduğunuz yerdir ve bunu, örneğin, Math::PI gibi sistem çağrılarında veya oluşturduğunuz sistemlerde görürsünüz.ThePentagon::NUMBER_OF_BUILDING_SIDES

İlgili konular