【问题标题】:What is the # (sharp, number, pound, hash) sign used for in Ruby?Ruby 中的#(尖号、数字、井号、井号)符号是什么?
【发布时间】:2013-09-03 12:06:08
【问题描述】:

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

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

我知道#`代表评论

# a comment

或“转换为值”:

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

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

Array#fill
File::file?

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

【问题讨论】:

  • 对于问题的第二部分:# 表示实例方法,:: 表示类方法。

标签: ruby


【解决方案1】:

instance方法是这样描述的:

Array#fill 

所以你可以:

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

class方法是这样描述的:

String::new

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

【讨论】:

    【解决方案2】:

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

    "#{}" 语法被称为“插值”,并且最有可能选择了英镑,因为插值在某种意义上类似于注释,因为您正在更改代码的上下文(在这种情况下为另一个执行上下文)

    类名后面的# 只是表示后面的标识符是该类的方法,只是一个约定。在此处阅读更多信息:Why are methods in Ruby documentation preceded by a hash sign?

    【讨论】:

      【解决方案3】:

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

      Car::is_hybrid?
      

      car.is_hybrid?
      

      正如您将在大多数代码中看到的那样,虽然 . 是方法的首选。

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

      【讨论】:

        【解决方案4】:

        只是为了向您展示一个示例,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>
        

        【讨论】:

          猜你喜欢
          • 2011-02-04
          • 2020-12-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-05-14
          相关资源
          最近更新 更多