理解 ruby 中的类 << self-ag捕鱼王app官网

理解 ruby 中的类 << self

作者:迹忆客 最近更新:2024/02/05 浏览次数:

在 ruby oop 中,class << self 是你经常遇到的语法。它通常用于定义类方法。

在本文中,我们将了解 class << self 语法以及为什么使用它来定义类方法。


ruby 中的实例方法和类方法

实例方法和类方法是 ruby 最常见的两种方法类型。

示例代码:

class employee
  def initialize(last_name, first_name)
    @last_name = last_name
    @first_name = first_name
  end
  def full_name
    "#{@first_name}#{@last_name}"
  end
  def self.company_name
    "ruby llc"
  end
end
employee1 = employee.new("mark", "david")
puts employee1.full_name
puts employee.company_name

输出:

david mark
ruby llc

full_name 是上面示例中的 instance 方法,company_nameclass 方法。full_name 特定于 employee 的一个实例,而 company 应该为类的每个实例返回相同的值,定义为 self.company_name

示例中的 self 指的是类本身,因此,我们也可以将其写为:

class employee
  def employee.company_name
    "ruby llc"
  end
end

ruby 中的 singleton 方法

还有另一种方法称为 singleton,它仅针对特定对象定义。它通常用于图形用户界面 (gui) 设计,其中不同的元素需要采取不同的操作。

如下所示,我们可以为 employee1 对象编写一个单例方法。

示例代码:

class employee
  def initialize(last_name, first_name)
    @last_name = last_name
    @first_name = first_name
  end
  def full_name
    "#{@first_name}#{@last_name}"
  end
  def self.company_name
    "ruby llc"
  end
end
employee1 = employee.new("mark", "david")
def employee1.responsiblity
  "handle recruitment"
end
puts employee1.responsiblity

输出:

handle recruitment

下面是上面代码的另一种写法:

示例代码:

class employee
  def initialize(last_name, first_name)
    @last_name = last_name
    @first_name = first_name
  end
  def full_name
    "#{@first_name}#{@last_name}"
  end
  def self.company_name
    "ruby llc"
  end
end
employee1 = employee.new("mark", "david")
class << employee1
  def responsiblity
    "handle recruitment"
  end
end
puts employee1.responsiblity

输出:

handle recruitment

上面的例子是 class << self 发挥作用的地方,上面例子中的 self 指的是 employee1 对象。

因此,我们可以重写 employee 类以使用 class << self 语法来定义其类方法。

示例代码:

class employee
  def initialize(last_name, first_name)
    @last_name = last_name
    @first_name = first_name
  end
  def full_name
    "#{@first_name}#{@last_name}"
  end
  class << self
    def company_name
      "ruby llc"
    end
  end
end
employee1 = employee.new("mark", "david")
puts employee.company_name

输出:

ruby llc

上一篇:ruby && 与 and 的区别

下一篇:

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

发布时间:2024/02/05 浏览次数:181 分类:编程语言

本文演示了 ruby 中注入方法的不同用途。

发布时间:2023/03/21 浏览次数:241 分类:编程语言

本文介绍了在 ruby 程序中调用 shell 命令的各种方法。

发布时间:2023/03/21 浏览次数:86 分类:编程语言

简要讨论 ruby 中的模式匹配运算符及其使用方式。

发布时间:2023/03/21 浏览次数:89 分类:编程语言

本教程说明了如何在 ruby 中使用安全导航。

发布时间:2023/03/21 浏览次数:189 分类:编程语言

本文展示了如何在 ruby 中编写一行 if 语句

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便
网站地图