gpt4 book ai didi

Ruby:使用 self 关键字从内部调用私有(private)方法

转载 作者:数据小太阳 更新时间:2023-10-29 06:47:00 31 4
gpt4 key购买 nike

class MyClass
def test
puts my_id
puts self.my_id
end

private

def my_id
115
end
end

m = MyClass.new
m.test

此脚本产生输出:

115
priv.rb:4:in `test': private method `my_id' called for #<MyClass:0x2a50b68> (NoMethodError)
from priv.rb:15:in `<main>'

使用 self 关键字和不使用关键字从内部调用方法有什么区别?

根据我的 Delphi 和 C# 经验:没有区别,self 可以用来避免与局部变量的名称冲突,表示我想调用实例函数或引用实例变量.

最佳答案

在 ruby 中 private方法只是一个不能用显式接收器调用的方法,即 . 左侧的任何东西。 , self 也不异常(exception), 除了 setter 方法(名称以 = 结尾的方法)

要消除非 setter 方法调用的歧义,您还可以使用括号,即

my_id()

对于私有(private) setter 方法,即如果你有

def my_id=(val)
end

那么你不能通过添加括号让 ruby​​ 将其解析为方法调用。你必须使用 self.my_id= ruby 将此解析为方法调用 - 这是“您不能使用显式接收器调用 setter 方法”的异常(exception)

关于Ruby:使用 self 关键字从内部调用私有(private)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25448096/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com