首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Ruby中#(锐利,数字,井号,散列)符号是用来做什么的?

在Ruby中#(锐利,数字,井号,散列)符号是用来做什么的?
EN

Stack Overflow用户
提问于 2013-09-03 20:06:09
回答 3查看 8.1K关注 0票数 26

Ruby锐号/数字符号/井号/散列(#)符号的各种含义是什么

符号#在Ruby语言中有多少个上下文?

我知道#`代表注释

代码语言:javascript
复制
# a comment

或‘转换为值’:

代码语言:javascript
复制
i = 1
print "#{i}" # simple example

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

代码语言:javascript
复制
Array#fill
File::file?

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

EN

回答 3

Stack Overflow用户

发布于 2013-09-03 20:12:03

在Perl中,#用于注释,因为Perl是Ruby的“祖先”,所以这个角色被继承了下来。

"#{}"语法被称为“插值”,选择井号的可能性最大,因为插值在某种意义上类似于注释,因为您正在更改代码的上下文(在本例中为另一个执行上下文)。

类名后面的#只是用来表示下面的标识符是这个类的一个方法,它只是一个约定。点击此处了解更多信息:Why are methods in Ruby documentation preceded by a hash sign?

票数 10
EN

Stack Overflow用户

发布于 2013-09-03 20:42:09

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

代码语言:javascript
复制
Car::is_hybrid?

代码语言:javascript
复制
car.is_hybrid?

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

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

票数 2
EN

Stack Overflow用户

发布于 2013-09-03 20:41:58

仅作为示例,Ruby显示了前面带有符号#实例方法和前面带有符号.的类方法。

代码语言:javascript
复制
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>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18591938

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档