到目前为止我们介绍的函数都只引用到传入的参数,假如我们定义如下的函数:(x:Int) => x + more这里我们引入一个自由变量 more。它不是所定义函数的参数,而这个变量定义在函数外面,比如:var more =1那么我们有如下的结果:scala> var more =1more: Int = 1scala> val addMore = (x:Int) => x + moreaddMore: Int => Int = <function1>
定义运算符本篇还将接着上篇 Rational 类,我们使用 add 定义两个 Rational 对象的加法。两个 Rational 加法可以写成 x.add(y)或者 x add y 即使使用 x add y 还是没有 x + y 来得简洁。我们前面说过在 Scala 中运算符(操作符)和普通的方法没有什么区别,任何方法都可以写成操作符的语法。比如:上面的 x add y。
Scala 提供了丰富的运算符用来操作前面介绍的基本数据类型。前面说过,这些运算符(操作符)实际为普通类方法的简化(或者称为美化)表示。比如 1+2 ,实际为 (1).+(2) ,也就是调用 Int 类型的+方法。例如:scala> val sumMore = (1).+(2)sumMore: Int = 3实际上类 Int 定义了多个+方法的重载方法(以支持不同的数据类型)比如和 Long 类型相加。