2013-09-03 18 views
17

Rubyのシャープ記号/ポンド記号/ハッシュ(#)記号の意味は何ですかRubyで使用されている#(シャープ、数字、ポンド、ハッシュ)記号は何ですか?

Rubyのシンボル#にはいくつのコンテキストがありますか?

私は#は `コメント

# a comment 

または 'の値に変換' を表していることを知っている:私はまた、いくつかのRubyのドキュメントは、内蔵のこれらのような方法を記述する参照しかし

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

を:

Array#fill 
File::file? 

彼らは2つの異なる記号を使って同じことを記述しますか? 私はRubyの新機能です。ありがとう

+7

質問の2番目の部分については、 '#'はインスタンスメソッドを示し、 '::'はクラスメソッドを示します。 –

答えて

10

これはどのようにインスタンス説明方法です:

:これは説明する方法 クラス方法である

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

Array#fill 

そうすることができます

String::new 

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

Perlでは、#はコメントに使用されていて、PerlはRubyの '祖先'なので、役割は引き継がれました。

"#{}"構文が「補間」と呼ばれ、あなたが(実行のために別のコンテキストにこのケースでは)あなたのコードのコンテキストを変更しているので、補間は、コメントと意味が似ているので、ポンドが最も可能性の高い選ばれた

クラス名に続く#は、次の識別子がそのクラスのメソッドであり、単なる規約であることを示すためのものです。それについての詳細をここに読む:Why are methods in Ruby documentation preceded by a hash sign?

1

例として、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> 
1

::が面白いです、それはあなたが.かかわらず、ほとんどのコードで表示されるように、あなたが

Car::is_hybrid? 

car.is_hybrid? 

の両方を経由してメソッドを呼び出すことができる点で.と同様の働き方法にとって好ましい。

::がよく使用される場合は、クラスで定数を使用している場合があります。Math::PIなどのシステムコールでこれを確認できます。ThePentagon::NUMBER_OF_BUILDING_SIDES

関連する問題