Ruby sharp / number sign / pound / hash(#)symbol
的各种含义是什么? Ruby中的符号#
有多少个上下文?
我知道#`代表评论
# a comment
或'转换为值':
i = 1
print "#{i}" # simple example
但是我也看到一些Ruby文档描述了这样的内置方法:
Array#fill
File::file?
他们为什么用2个不同的符号描述同样的事情? 我是Ruby的新手。谢谢
答案 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>