理解 ruby 中的类 << self
在 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_name
是 class
方法。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
转载请发邮件至 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 语句