Ruby中使用的#(尖锐,数字,磅,哈希)符号是什么?

时间:2013-09-03 12:06:09

标签: ruby

Ruby sharp / number sign / pound / hash(#)symbol

的各种含义是什么?

Ruby中的符号#有多少个上下文?

我知道#`代表评论

# a comment

或'转换为值':

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

但是我也看到一些Ruby文档描述了这样的内置方法:

Array#fill
File::file?

他们为什么用2个不同的符号描述同样的事情? 我是Ruby的新手。谢谢

4 个答案:

答案 0 :(得分:11)

这是实例方法描述的方式:

Array#fill 

所以你可以:

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

这是方法描述的方式:

String::new

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

答案 1 :(得分:10)

在Perl中,#用于评论,并且由于Perl是Ruby的“祖先”,因此角色被转移。

"#{}"语法被称为'插值',并且最有可能选择磅,因为插值在某种意义上类似于注释,因为您正在更改代码的上下文(在这种情况下是另一个上下文用于执行) )

类名后面的#只是表示以下标识符是该类的方法,并且只是一种约定。在此处阅读更多相关信息:Why are methods in Ruby documentation preceded by a hash sign?

答案 2 :(得分:2)

::很有趣,它与.的行为类似,因为您可以通过两者调用方法

Car::is_hybrid?

car.is_hybrid?

正如您将在大多数代码中看到的那样,.是方法的首选。

通常首选::的一种情况是,您在课程中保持不变,并且您会在系统调用中看到此信息,例如Math::PI或您创建的系统调用,例如ThePentagon::NUMBER_OF_BUILDING_SIDES

答案 3 :(得分: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>