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>