热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

用于声明lvalue/rvalue=运算符的Ruby语法

如何解决《用于声明lvalue/rvalue=运算符的Ruby语法》经验,为你挑选了1个好方法。

我试图在Ruby中构建一个equals函数.我想做的就是这样,假设我们有一个名为A的类:

class A
    attr_accessor :secret_datum

    def public_datum
        return secret_datum
    end

    def public_datum= what
      secret_datum = what
    end
end

我想要的主要是建立一个更复杂的幕后功能,具体取决于public_datum是用作左值还是右值,但我上面的代码不起作用:

2.5.0 :027 > a = A.new
 => # 
2.5.0 :028 > a.public_datum = 7
 => 7 
2.5.0 :029 > a.public_datum
 => nil 

声明这样一组函数的正确语法是什么?



1> Holger Just..:

将值赋给裸字时secret_datum = what,总是要设置一个简单的局部变量.

看来你实际上想要使用你的类的setter(然后设置实例变量).为此,您必须向Ruby提示您要调用该方法.您可以通过定义接收器对象来完成此操作.你的二传手看起来像这样:

def public_datum=(what)
  self.secret_datum = what
end

或者,您可以直接设置实例变量,如下所示:

def public_datum=(what)
  @secret_datum = what
end

最后请注意,您的secret_datum访问者仍然是公开的.因此,你也可以打电话a.secret_datum = 7,它将完全相同.


推荐阅读
author-avatar
ssben_530
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有