Ruby 语言与Python和Perl的一个很大区别,在于Ruby中,所有的实例变量都是在类中完全私有的,只能通过accessor 方法来进行变量访问,引用一段代码来说明具体的使用方法:
class Rectangle
attr_accessor :width
attr_accessor :height
attr_accessor :width2
attr_accessor :height2
def initialize(wdth, hgt)
@width = wdth
@height = hgt
end
def area()
return @width * @height
end
def area2()
return @width2 * @height2
end
end
r = Rectangle.new(2,3)
r.width = 5 # give samename's variable value
r.height = 5
puts r.area() #outputs is 25
r.width2 = 6 # not samename's variable create
r.height2 = 6
puts r.area2() # outputs is 36
attr_reader: 实例变量只读
attr_writer: 实例变量可写
attr_accessor: 变量可读可写
分享到:
相关推荐
需要程序员经常刷题吗范围属性访问器 将范围访问器添加到 ruby。 您可以在私有或受保护范围内创建作者、读者和访问...protected_attr_reader :some_weird_counter end class Monkey < Primate # Monkey can def
#weak_attr_accessor 用于 用法 做这个: class MainView < UIView weak_attr_accessor :view_controller end 而不是这个: class MainView < UIView def view_controller @view_controller end def...
安装将attr_encrypted添加到您的gemfile中: gem "attr_encrypted" , "~> 3.1.0" 然后安装gem: bundle install用法如果您正在使用ActiveRecord , DataMapper或Sequel类的ORM,则使用attr_encrypted很容易: class ...
提供像attr_private和attr_value这样的底层方法,可以很好地补充Ruby的内置attr_accessor , attr_reader和attr_writer 。 像pattr_initialize (或attr_private_initialize )和method_object这样的更高级别的...
attr_typecastable attr_accessor 具有类型转换功能。要求Ruby 2.0 或更高版本安装将此行添加到应用程序的 Gemfile 中: gem 'attr_typecastable' 然后执行: $ bundle或者自己安装: $ gem install attr_...
attr_accessor :send_email def initialize @send_email = true end def send_email? send_email end end 该类定义了一个Configuration对象,其中包含应用程序是否应该发送电子邮件的设置。 send_email设置...
例子: 宏定义文件: macro_mapper attr_reader ( label ) def ~ { label } @~ { label } endendmacro_mapper attr_writer ( label ) def ~ { label } = ( value ) @~ { label } = value endendmacro attr_accessor ...
在Ruby中,通常我们使用`attr_accessor`、`attr_reader`或`attr_writer`来定义类的属性。例如: ```ruby class Example attr_accessor :name end example = Example.new example.name = "John Doe" puts example....
在Ruby中,属性访问器是通过`attr_accessor`、`attr_reader`和`attr_writer`这三个内置宏来创建的。`attr_accessor`用于同时创建读取(getter)和写入(setter)方法,`attr_reader`只创建getter,`attr_writer`则只...
在 Ruby 中,我们可以使用 `attr_accessor`、`attr_reader` 和 `attr_writer` 这三个内置宏来轻松定义这些方法。它们极大地提高了代码的可读性和简洁性。 1. **attr_accessor**:这个宏同时创建了 getter 和 setter...
获得辨别何时实现attr_accessor , attr_reader和attr_writer 。 能够识别何时定义自己的attr_reader (getter)和attr_writer (setter)方法。 介绍 为了练习面向对象的编程(OOP),您将创建一个Person类。 ...
gem 的主要思想是将所有对象验证逻辑与对象本身分离用法假设您有以下类,并且您想验证此类的对象 class Contact attr_accessor :first_name , :last_name , :position , :age , :type , :email , :color , :status ...
使用define_method创建Ruby 内置attr_accessor方法的布尔版本。代码片段: 使用define_method attr_accessor方法 def self . attr_accessor? ( attr ) read_method = " #{ attr } ?" write_method = " #{ attr } =...
4. **只读属性(Read-only Attributes)**: 如果只想提供getter方法,可以使用`attr_reader`。这禁止了外部代码直接修改属性的值,确保数据的完整性。 5. **只写属性(Write-only Attributes)**: 同样,如果只需要...
- **`attr_reader`**:仅提供访问器的方法。 ```ruby class Box attr_reader :width, :height def initialize(width, height) @width = width @height = height end end ``` - **`attr_writer`**:仅...
实例它是什么? Instance 是一种方便且安全的API,用于访问和操作对象的状态。它是如何工作的... class Song attr_accessor :title attr_accessor :artist attr_accessor :year def initialize ( title , artist
- 使用 `attr_accessor`, `attr_reader`, `attr_writer` 来声明属性,而不是手动创建getter和setter。 - 避免在类的初始化方法之外定义实例变量,使用 `attr_accessor` 或 `initialize` 方法初始化。 6. **错误...
AttrFilters 轻量级的gem,用于以零依赖关系过滤PORO(普通的旧式Ruby对象)属性。... attr_accessor :email , :first_name , :last_name , :zip , :birth_date , :due_date filters :email , trim : true , down
请记住,某些属性应该是可读可写(即attr_accessor S),而另一些可能需要只是制定者( attr_writer )或只是吸气剂( attr_reader )。测试套件将明确这一点,因此请注意测试输出。第二部分:对象关系主人应该能够...
`attr_accessor`、`attr_reader`和`attr_writer`是用于快速创建属性的元编程工具。符号(Symbol)在Ruby中是特殊的,它们在内存中只存在一份,常用于元编程中的键值。 5. **Proc对象与lambda**:Ruby的`Proc`和`...