Ruby中使用的#(sharp,number,pound,hash)符号是什么



Ruby sharp/数字符号/pound/hash(#)符号的各种含义是什么

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

我知道#`代表评论

# a comment

或"转换为值":

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

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

Array#fill
File::file?

为什么他们用两个不同的符号来描述同一件事?我是Ruby的新手。感谢

这就是实例方法的描述:

Array#fill 

所以你可以:

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

方法就是这样描述的:

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

在Perl中,#用于注释,由于Perl是Ruby的"祖先",因此该角色被继承。

"#{}"语法被称为"interpolation",之所以选择英镑,很可能是因为interpolation在某种意义上类似于注释,因为您正在更改代码的上下文(在本例中为执行另一个上下文)

类名后面的#只是表示下面的标识符是该类的一个方法,只是一种约定。在这里阅读更多信息:为什么Ruby文档中的方法前面有一个哈希符号?

::很有趣,它的作用类似于.,因为您可以通过两个调用方法

Car::is_hybrid?

car.is_hybrid?

正如您将在大多数代码中看到的,尽管方法首选.

::通常是首选的一种情况是,类中有常量,您将在系统调用(如Math::PI)或您创建的系统调用(例如ThePentagon::NUMBER_OF_BUILDING_SIDES )中看到这一点

仅举一个例子,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>

相关内容

最新更新