• 测试技术
  • 博客
  • 视频
  • 开源
  • 论坛
  • 沙龙
  • 下载
  • 杂志
  • 招聘

字号: | 推荐给好友 上一篇 | 下一篇

面向 Java 开发人员的 Scala 指南: 类操作

发布: 2008-6-30 14:00 | 作者: 不详 | 来源: 领测软件测试网编辑整理 | 查看: 46次 | 进入领测软件测试网论坛讨论

领测软件测试网

[{ C2`&tI} 软件测试技术门户 H)}7er?

在 Rational 类中,为有理数定义了 4 种操作。它们是规范的数学操作:加、减、乘、除。每种操作以它的数学符号命名:+、-、 * 和 /。

P"`?JV!R 软件测试技术门户,RM#jT] Nd0r

但是请注意,这些操作符每次操作时都构造一个新的 Rational 对象。同样,这与 java.lang.String 非常相似,这是默认的实现,因为这样可以产生线程安全的代码(如果线程没有修改共享状态 —— 默认情况下,跨线程共享的对象的内部状态也属于共享状态 —— 则不会影响对那个状态的并发访问)。软件测试技术门户9p,{|jNG J@;_p

软件测试技术门户\{+y8o(TPz$A

有什么变化?

"^ L6O'Dx?{

,w@karg(T一切都是函数,这一规则产生两个重要影响:软件测试技术门户;Ur:N ~~2L Bn

p!K7si;c首先,您已经看到,函数可以作为对象进行操纵和存储。这使函数具有强大的可重用性,本系列 第一篇文章 对此作了探讨。软件测试技术门户5j6w5gE@{ t9x X

软件测试技术门户.VA sPd

第二个影响是,Scala 语言设计者提供的操作符与 Scala 程序员认为应该 提供的操作符之间没有特别的差异。例如,假设提供一个 “求倒数” 操作符,这个操作符会将分子和分母调换,返回一个新的 Rational (即对于 Rational(2,5) 将返回 Rational(5,2))。如果您认为 ~ 符号最适合表示这个概念,那么可以使用此符号作为名称定义一个新方法,该方法将和 Java 代码中任何其他操作符一样,如清单 5 所示:

$BT g&` |tKt O1z^ f

(KP5`/Q0cyv#l
W&sGd1Vzy清单 5. 求倒数
y#Q"]v^\T3u               
0v9{I?XU ]  val r6 = ~r1软件测试技术门户ND`{P
  Console.println(r6) // should print [3 / 1], since r1 = [1 / 3]
"w"n~YyQ 软件测试技术门户lqLRN(ai

V#a1X+u5{A?`F}J软件测试技术门户^