`

attr_accessor vs attr_reader

    博客分类:
  • RUBY
 
阅读更多
attr_reader: 实例变量只读
attr_writer: 实例变量可写
attr_accessor: 变量可读可写

attr_reader :approver
 
  def approver
  return nil if @approver.nil?
   u = User.find_by(User.user_conditions(@approver))
  end

  def approver=(user)
    u = User.find_by(User.user_conditions(user))
    throw "approver does not exist"  if u.nil?
    @approver = u
  end

如果不考虑(红色)逻辑处理,那么。
以上代码等同于:
attr_accessor :approver
分享到:
评论

相关推荐

    程序员需要经常刷题吗-scoped_attr_accessor:将私有和受保护的attr_accessor方法添加到您的类-或所有ruby

    需要程序员经常刷题吗范围属性访问器 将范围访问器添加到 ruby​​。 您可以在私有或受保护范围内创建作者、读者和访问...protected_attr_reader :some_weird_counter end class Monkey < Primate # Monkey can def

    attr_extras:使用attr_initialize之类的方法从Ruby中获取一些样板

    提供像attr_private和attr_value这样的底层方法,可以很好地补充Ruby的内置attr_accessor , attr_reader和attr_writer 。 像pattr_initialize (或attr_private_initialize )和method_object这样的更高级别的...

    sith:带有Ruby样板符号的Ruby宏预处理器

    例子: 宏定义文件: macro_mapper attr_reader ( label ) def ~ { label } @~ { label } endendmacro_mapper attr_writer ( label ) def ~ { label } = ( value ) @~ { label } = value endendmacro attr_accessor ...

    ruby-oo-self-person-lab

    获得辨别何时实现attr_accessor , attr_reader和attr_writer 。 能够识别何时定义自己的attr_reader (getter)和attr_writer (setter)方法。 介绍 为了练习面向对象的编程(OOP),您将创建一个Person类。 ...

    oo-my-pets-v-000

    请记住,某些属性应该是可读可写(即attr_accessor S),而另一些可能需要只是制定者( attr_writer )或只是吸气剂( attr_reader )。 测试套件会清楚说明这一点,因此请注意测试输出。 第二部分:对象关系 主人...

    oo-my-pets-online-web-sp-000

    请记住,某些属性应该是可读可写(即attr_accessor S),而另一些可能需要只是制定者( attr_writer )或只是吸气剂( attr_reader )。测试套件将明确这一点,因此请注意测试输出。第二部分:对象关系主人应该能够...

    ruby-oo-object-relationships-my-pets

    请记住,某些属性应该是可读可写(即attr_accessor S),而另一些可能需要只是制定者( attr_writer )或只是吸气剂( attr_reader )。 测试套件将明确这一点,因此请注意测试输出。 第二部分:对象关系 主人应该...

    动态Orms-Readme-V-000

    动态ORM目标解释为什么动态ORM对... 我们可以通过使用类来创建数据库表来实现此映射: class Song attr_accessor :name , :album attr_reader :id def initialize ( id = nil , name , album ) @id = id @name = name

    dynamic-orms-readme-online-web-sp-000

    动态ORM 目标 解释为什么动态ORM对我们作为开发人员有用 建立基本的动态ORM ... attr_accessor :name , :album attr_reader :id def initialize ( id = nil , name , album ) @id = id @name = name @al

    python3.6.5参考手册 chm

    Text Vs. Data Instead Of Unicode Vs. 8-bit Overview Of Syntax Changes New Syntax Changed Syntax Removed Syntax Changes Already Present In Python 2.6 Library Changes PEP 3101: A New Approach To ...

Global site tag (gtag.js) - Google Analytics