Ruby 尖/数字符号/磅/哈希(#) 符号的各种含义是什么
#
Ruby中的符号有多少个上下文?
我知道#`代表评论
# a comment
或“转换为值”:
i = 1
print "#{i}" # simple example
但是我也看到一些 Ruby 文档描述了这些内置方法:
Array#fill
File::file?
为什么他们用 2 个不同的符号来描述同一件事?我是 Ruby 的新手。谢谢
Ruby 尖/数字符号/磅/哈希(#) 符号的各种含义是什么
#
Ruby中的符号有多少个上下文?
我知道#`代表评论
# a comment
或“转换为值”:
i = 1
print "#{i}" # simple example
但是我也看到一些 Ruby 文档描述了这些内置方法:
Array#fill
File::file?
为什么他们用 2 个不同的符号来描述同一件事?我是 Ruby 的新手。谢谢
这是实例方法描述的方式:
Array#fill
这样你就可以:
a = Array.new(2)
=> [nil, nil]
a.fill(42)
=> [42, 42]
这是类方法的描述方式:
String::new
s = String.new('abc')
=> "abc"
在 Perl 中,# 用于注释,并且由于 Perl 是 Ruby 的“祖先”,所以这个角色被继承了。
语法称为“"#{}"
插值”,最有可能选择英镑是因为插值在某种意义上类似于注释,因为您正在更改代码的上下文(在这种情况下为另一个执行上下文)
类名后面的 # 仅表示以下标识符是该类的方法,并且只是一个约定。在此处阅读有关它的更多信息:为什么 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>