1 访问器方法 attr_accessor
class Complex attr_accessor :r, :i def initialize(r,i) @r = r @i = i puts "realpart is #{@r}, imaginarypart is #{@i}." end def complex_add(complex) self.r = self.r + complex.r self.i = self.i + complex.i puts "realpart is #{@r}, imaginarypart is #{@i}." end end com1 = Complex.new(2,2) p com1.r com1.r = 3
访问器方法的作用相当于替代了方法: def get_r return @r end 及方法: def set_r(r) @r = r End com1.get_r com1.set_r(3) 使用 attr_accessor 修饰变量后,就可以用 对象.变量 来使用变量了,否则只能在实例方法 中访问变量,在外部无法直接访问变量,需要访问时,必须要定义一个返回该变量的方法; 要给变量写值时,也要定义一个改写变量值的方法;而且在有两个对象的方法里无法用@r 来区分是哪个对象的变量。 attr_accessor 可以读,也可以写,如 com1.r = 2 等;attr_reader 只能读不能写。
2 ruby 中对象作为形参
如上例, 要想让对象作为函数的形参, 就要使用该对象所属的类名小写第一个字母后作为形 参,在函数中需要使用该对象的变量时,也用 类名的小写.变量名 来调用。
3 ruby 中的构造函数就是 initialize 初始化方法 中的构造函数就是
【构造函数的目的就是对象的初始化。但 initialize 不支持多个不同参数的构造函数重载。 】
问题:ruby 中如何实现构造函数的重载?