`
edge
  • 浏览: 68948 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Scala概述(二)一种类似Java的语言

阅读更多

<!----><!---->

2.       <!---->一种类似 Java 的语言

Scala 被设计成为可以与主流平台很好的交互,包括 Java C# 。因此其绝大部分的基本操作符、数据类型和控制逻辑都与这两种语言相同。为简单起见,后面我们仅将 Scala Java 作对比,由于 Java C# 本身就有很多共同点,因此 Scala 绝大部分与 Java 的相似之处都可直接应用于 C# 。其实有些情况下 Scala 甚至更接近 C# ,例如对泛型的处理方面。

1 列出了 Java Scala 实现同样功能的两段程序,都是打印出程序命令行包含的所有选项。

 

<!----><!----><!---->

// Java

class PrintOptions {

    public static void main(String[] args) {

       System.out.println("Options selected:");

       for (int i = 0; i < args.length; i++)

           if (args[i].startsWith("-"))

              System.out.println(" " + args[i].substring(1));

    }

}

 

// Scala

object PrintOptions {

  def main(args: Array[String]): Unit = {

    System.out.println("Options selected:");

    for (val arg<-args)

      if (arg.startsWith("-"))

        System.out.println(" "+arg.substring(1))

  }

}

 

1 Scala Java 程序示例

 

这个示例显示出两种语言很多相似性:他们都有 String 这种基本类,调用同名的方法,使用同样的操作符、同样的条件控制结构等。示例同时也体现两种语言的差异,包括:

 

  • <!---->Scala 除类定义之外,还有对象定义的概念(以 Object 开头)。对象定义实际上是定义了一个只有单个实例的类,也就是通常所说的单例( singleton )。在上例中, PrintOptions 这个单例类有一个名为 main 的成员方法。
  • <!---->Scala 采用“名称:类型”的方式进行变量定义和参数传递,而 Java 是使用类型前缀的形式,也就是“类型 名称”。
  • <!----><!---->Scala 的语法比 Java 的相对更规范:所有的定义都由一个关键字开始,如上例中的 def main ,开始定义一个方法。
  • <!---->Scala 不强制要求语句结束使用分号,分号是可选的。(原文中 Java 语句也没有分号,明显是错漏; Scala 两个语句都没有分号,我特意加了一个,更体现原意,当然是确保编译和运行正确的情况下——译注)
  • <!---->Scala 没有特定语法来描述数组类型和数组的存取,一个元素类型为 T 的数组用 Array [T ] 来表示。这里 Array 是一个标准的类,而 [T ] 是一个类型参数。实际上, Scala 的数组是继承自函数的,因此数组存取形式就像函数调用 a(i ) ,而不是像 Java a[i ] 。数组将在 4.3 节进一步讨论。
  • <!---->main 函数的返回类型是 unit Java 中是 void 。这种处理源自于这样一个事实: Scala 中语句和表达式没有区别。每一个函数都返回一个值,如果一个函数的右侧是一个 block ,那么这个 block 的最后一个表达式的求值将作为其返回值。 Unit 类型的返回值可能是一个平凡值 {} 。其他的控制结构,如 if-then-else 等,也被泛化为表达式。
  • <!---->Scala 采纳了 Java 绝大部分控制结构,但不包含传统的 for 语句。作为替代, Scala 包含 for-comprehensions ,它允许直接遍历数组、列表、迭代器等数据结构而无需使用索引。 Java 5.0 也包括了扩展的 for 循环,有点类似于 Scala for-comprehensions ,但要严格很多。(一般还有文章对于 list-comprehensions 进行翻译或者探讨翻译的方式,目前尚未有结论。而 for-comprehensions 这种语法结构的名词还没有在其他语言中看到,因此暂不作任何翻译的尝试了——译注)

 

尽管语法上存在差异, Scala 程序和 Java 程序进行互操作没有任何困难。如上例所示 Scala 程序调用了 String 类的 startWith substring 方法,而这里的 String 是一个 Java 类。它还访问了 Java System 类的 out 这一静态属性,并且调用其经过重载的 println 方法。实际上 Scala 的类根本没有静态成员这一概念,但是上述调用仍然成为可能,这是因为每一个 Java 类在 Scala 中对应两个实体:一个是包含了所有动态成员的类,一个是包含了所有静态成员的单例对象。因此 System.out 这一属性是通过 Scala System 这个单例对象来访问的。

此外,上例中并未描述的是, Scala 的类 / 对象还能够继承 Java 类或实现 Java 定义的接口,这使得在 Java 框架中调用 Scala 代码成为可能。例如,一个 Scala 类可以实现 Java java.util.EventListener 接口,从而使该 Scala 类的实例可以接收到 Java 代码发出的事件。

 

分享到:
评论

相关推荐

    大数据课程-Scala编程基础-1.Scala语言初识_lk_edit.ppt

    Scala是一种在2001年由洛桑联邦理工学院(EPFL)的编程方法实验室研发的语言,由Martin Odersky创建。它结合了面向对象和函数式编程的特性,旨在提高开发效率、应用程序的可扩展性和可靠性。 Scala与Java的关系密切...

    scala 编程语言

    Scala是一种现代的多范式编程语言,它结合了面向对象编程和函数式编程的特点。Scala的设计目标是解决Java等传统面向对象语言在扩展性和灵活性方面的局限性,同时保持与现有Java生态系统的高度兼容性。 #### 二、...

    Scala语言规范.docx

    Scala作为一种融合了面向对象和函数式编程特性的语言,不仅提供了强大的编程能力,还确保了与Java的高度兼容性。通过不断的发展和完善,Scala已经成为了一个功能强大、易于使用的编程语言,适用于各种应用场景,无论...

    Scala语言规范.zip

    Scala是一种多范式编程语言,它融合了面向对象和函数式编程的概念,旨在提供一种更高级别的抽象,使代码更加简洁、优雅。由于其与Java虚拟机(JVM)的紧密集成,Scala程序可以直接在Java平台上运行,这也是它被标记...

    Scala详细总结(精辟版++)

    Scala是一种静态类型的编程语言,其设计旨在结合面向对象编程和函数式编程的优点,并且能在Java虚拟机(JVM)上运行。这意味着Scala能够充分利用现有的Java类库,并且能够与Java代码无缝集成。Scala不仅支持面向对象...

    Scala编程基础.docx

    Scala 是一种多范式的编程语言,其设计的初衷是要集成面向对象编程和函数式编程的各种特性。Scala 运行于 Java 平台(Java 虚拟机),并兼容现有的 Java 程序。 目标 1. 熟练使用 Scala 编写 Spark 程序 2. 动手...

    programming in scala

    Scala是一种静态类型的编程语言,设计用于Java平台上,旨在提供一种简洁且强大的编程体验。它融合了面向对象编程与函数式编程的最佳特性,使得开发者能够在编写高效、可维护的代码时,拥有更多的灵活性。Scala的目标...

    学习笔记.pdf

    Scala 语言是一种现代的、多范式的编程语言,设计目标是提供一种可以与 Java 语言无缝集成的语言。Scala 语言的诞生是为了解决 Java 语言在大型项目中的不足之处,例如代码冗长、不够灵活等问题。 2. Scala 语言的...

    scala的操作笔记

    #### 二、Scala概述 ##### 2.1 什么是Scala Scala是一种多范式编程语言,它结合了面向对象编程与函数式编程的特点。Scala语言的设计目标之一就是尽可能地提高代码的可读性和简洁性,同时保持高性能。由于Scala运行...

    scala 教程

    - **静态类型**:Scala是一种静态类型语言,这意味着编译时就可以检测到类型错误,有助于提高代码质量。 #### 三、Scala教程章节概述 **第1章:可伸展的语言** - **关键概念**: - 可伸展性:Scala语言设计允许...

    Scala 电子书

    Scala是一种多范式编程语言,它融合了面向对象和函数式编程的概念,旨在提供一种简洁、类型安全且高性能的编程体验。在这个电子书集合中,我们有三本关于Scala的重要书籍,分别是"Scala Tutorial"、"Programming in ...

    A Brief Introduction to Scala

    Scala是一种相对新兴的编程语言,旨在为Java虚拟机(JVM)以及后来的通用语言运行时(CLR)提供支持。它融合了函数式编程(Functional Programming, FP)与面向对象编程(Object-Oriented Programming, OOP)的特点,使得...

    Practical Scala

    Scala是一种运行在Java虚拟机(JVM)上的多范式编程语言,它支持面向对象编程和函数式编程两种编程范式。由于Scala是在JVM上运行,因此它可以无缝地与其他基于JVM的语言(如Java)进行交互。 #### 三、Scala的关键...

    scala编程指导文档

    Scala是一种多范式编程语言,结合了面向对象编程和函数式编程的特点,运行在Java平台(JVM)上。它既能够提供静态类型检查的安全性,又能实现动态语言的灵活性。Scala的设计目标是解决Java的一些局限性,同时保持与...

    Scala in Action.pdf

    Scala是一种融合了面向对象编程和函数式编程特性的多范式编程语言。 #### 四、部分内容 - **出版社信息**: - **出版商**:MANNING出版社。 - **出版时间**:2013年。 - **版权说明**:书中提到所有权利均受...

Global site tag (gtag.js) - Google Analytics