无对象函数

函数reim 有个小问题,为了调用函数,我们必须在函数名称后面加上一对空括号,如这个例子:

  1. object ComplexNumbers {
  2. def main(args: Array[String]) {
  3. val c = new Complex(1.2, 3.4)
  4. println("imaginary part: " + c.im())
  5. }
  6. }

最好能够在不需要加括号的情况下取得实虚部,这样便像是在取得属性。Scala完全可以做到这件事,需要的只是在定义函数的时候不要定义参数。这种函数跟零参数函数是不一样的,不论是定义或是调用,它们都没有括号跟在名字后面。我们的Complex 可以改写成:

  1. class Complex(real: Double, imaginary: Double) {
  2. def re = real
  3. def im = imaginary
  4. }