ruby - ruby 中的类方法和不同的编程风格

标签 ruby

<分区>

我很好奇调用类方法和它们之间是否有任何区别:

class Jt
  class << self
    def say_hello
      puts "I want to say hello"
    end
  end
end

class Jt2
  def self.say_hello
    puts "2 want to say hello"
  end
end

Jt.say_hello
Jt2.say_hello

它只是风格还是 ruby​​ 处理这些的方式有什么不同?我总是将后者用于 Rails 的东西,但倾向于在元编程或 Rails 源代码中看到前者。

最佳答案

我认为它们之间的区别只是风格。他们都在类的单例类中添加了一个方法。以下是我对您的代码所做的调查:

class Jt
  class << self
    def say_hello
      puts "I want to say hello"
    end
  end
end

class Jt2
  def self.say_hello
    puts "2 want to say hello"
  end
end

p Jt.singleton_class.instance_method(:say_hello)   # => #<UnboundMethod: #<Class:Jt>#say_hello>
p Jt2.singleton_class.instance_method(:say_hello)  # => #<UnboundMethod: #<Class:Jt2>#say_hello>

以防万一,我使用了 JRuby。

关于ruby - ruby 中的类方法和不同的编程风格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16200197/

相关文章:

任何人都可以提供有关猴子修补/ Hook Ruby 字符串 #{} 进行插值的指导吗?

ruby - 在resque中查找时间表 - ruby

ruby - 如何将参数传递给 array.map 快捷方式?

ruby-on-rails - Ruby 代码在路由工作时没有得到解释

ruby - 当程序等待 stdin 时,为什么 open4 无法从 stdout 读取数据?

mysql - 使用 Ruby 将来自两个单独数组的值插入到 mysql 表中

ruby-on-rails - Ruby 重构包括?接受多个字符串

ruby-on-rails - gem 未安装

ruby-on-rails - 如何将应用程序从 Ruby 2.0.0 降级到 1.9.3

ruby - MiniMagick:使 png 部分不透明/如何使用 '-evaluate'