面向Java开辟人员的Scala指南 - 类操作[Java编程]
本文“面向Java开辟人员的Scala指南 - 类操作[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
Java™ 开辟人员可以将对象作为理解 Scala 的动身点.本文是面向 Java 开辟人员的 Scala 指南 系列 的第二期,作者 Ted Neward 遵守对一种语言举行评价的基本前提:一种语言的威力可以直接通过它集成新功效的本领衡量,在本文中就是指对复数的支持.跟随本文,您将理解在 Scala 中与类的定义和利用有关的一些风趣特点.
在上一期 文章 中,您只是略微理解了一些 Scala 语法,这些是运行 Scala 程序和理解其简单特点的最基本要求.通过上一篇文章中的 Hello World 和 Timer 示例程序,您理解了 Scala 的 Application 类、办法定义和匿名函数的语法,还略微理解了 Array[] 和一些范例推断方面的知识.Scala 还供应了很多其他特点,本文将研究 Scala 编程中的一些较复杂方面.
Scala 的函数编程特点非常惹人注目,但这并非 Java 开辟人员应当对这门语言感爱好的惟一缘由.实际上,Scala 交融了函数概念和面向对象概念.为了让 Java 和 Scala 程序员感到得心应手,可以理解一下 Scala 的对象特点,看看它们是如安在语言方面与 Java 对应的.记着,此中的一些特点并非直接对应,大概说,在某些情形下,“对应” 更像是一种类比,而不是直接的对应.不过,碰到重要辨别时,我会指出来.
Scala 和 Java 一样利用类
我们不对 Scala 支持的类特点作冗长而抽象的谈论,而是着眼于一个类的定义,这个类可用于为 Scala 平台引入对有理数的支持(主要鉴戒自 “Scala By Example”,拜见 参考资料):
清单 1. rational.scala
class Rational(n:Int, d:Int)
{
private def gcd(x:Int, y:Int): Int =
{
if (x==0) y
else if (x<0) gcd(-x, y)
else if (y<0) -gcd(x, -y)
else gcd(y%x, x)
}
private val g = gcd(n,d)
val numer:Int = n/g
val denom:Int = d/g
def +(that:Rational) =
new Rational(numer*that.denom + that.numer*denom, denom * that.denom)
def -(that:Rational) =
new Rational(numer * that.denom - that.numer * denom, denom * that.denom)
def *(that:Rational) =
new Rational(numer * that.numer, denom * that.denom)
def /(that:Rational) =
new Rational(numer * that.denom, denom * that.numer)
override def toString() =
"Rational: [" + numer + " / " + denom + "]"
}
从词汇上看,清单 1 的整体构造与 Java 代码近似,但是,这里明显还有一些新的元素.在具体谈论这个定义之前,先看一段利用这个新 Rational 类的代码:
清单 2. RunRational
class Rational(n:Int, d:Int)
{
// ... as before
}
object RunRational extends Application
{
val r1 = new Rational(1, 3)
val r2 = new Rational(2, 5)
val r3 = r1 - r2
val r4 = r1 + r2
Console.println("r1 = " + r1)
Console.println("r2 = " + r2)
Console.println("r3 = r1 - r2 = " + r3)
Console.println("r4 = r1 + r2 = " + r4)
}
以上是“面向Java开辟人员的Scala指南 - 类操作[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |