位置:首页 > 高级语言 > Scala在线教程 > Scala基础语法

Scala基础语法

如果有很好的了解Java语言,那么将很容易学习Scala。 Scala和Java间的最大语法的区别在于;行结束符是可选的。考虑Scala程序它可以被定义为通过调用彼此方法进行通信的对象的集合。现在,简要地看看什么叫做类,对象,方法和临时变量。

  • 对象 - 对象有状态和行为。例如:狗有状态 - 颜色,名字,品种,它有行为 - 摇摆,吠叫,吃东西。对象是类的一个实例。

  • 类 - 类可以被定义为一个模板/蓝本以描述行为/指示其类型支持对象。

  • 方法 - 方法本质上是一个行为。类可以包含许多方法。它是在将逻辑写入方法中,数据进行操作和所有动作被执行。

  • 字段 - 每个对象都有其独特的一组临时变量,这是所谓的字段。对象的状态是由分配给这些字段中的值创建的。

第一个Scala程序:

交互式模式编程:

调用解释不通过一个脚本文件作为一个参数会显示以下提示:

C:>scala
Welcome to Scala version 2.9.0.1
Type in expressions to have them evaluated.
Type :help for more information.

scala>

键入下列文字的Scala提示符,然后按Enter键:

scala> println("Hello, Scala!");

这将产生以下结果:

Hello, Scala!

脚本模式编程:

让我们来看一个简单的代码,用于打印简单的一句话:Hello, World!

object HelloWorld {
   /* This is my first java program.  
    * This will print 'Hello World' as the output
    */
   def main(args: Array[String]) {
      println("Hello, world!") // prints Hello World
   }
}

让我们来看看如何保存文件,编译并运行该程序。请按照以下的步骤:

  1. 打开记事本,并添加上面代码。

  2. 将文件保存为:HelloWorld.scala。

  3. 打开命令提示符窗口,然后转到保存程序文件的目录。假设它是 C:>

  4. 键入“scalac HelloWorld.scala”,然后按回车编译代码。如果代码中没有错误,命令提示符下将自动换到下一行。

  5. 上面的命令将在当前目录中生成几个类文件。其中一个名称为HelloWorld.class。这是一个字节码可以运行在Java虚拟机(JVM)。

  6. 现在,键入“scala HelloWorld”来运行程序。

  7. 可以看到“Hello, World!”打印在窗口上。

C:> scalac HelloWorld.scala
C:> scala HelloWorld
Hello, World!

基础语法

关于Scala程序,这是非常要注意以下几点。

  • 区分大小写 -  Scala是大小写敏感的,这意味着标识Hello 和 hello在Scala中会有不同的含义。

  • 类名 - 对于所有的类名的第一个字母要大写。

    如果需要使用几个单词来构成一个类的名称,每个单词的第一个字母要大写。

    示例:class MyFirstScalaClass

  • 方法名称 - 所有的方法名称的第一个字母用小写。

    如果若干单词被用于构成方法的名称,则每个单词的第一个字母应大写。

    示例:def myMethodName()

  • 程序文件名 - 程序文件的名称应该与对象名称完全匹配。

    保存文件时,应该保存它使用的对象名称(记住Scala是区分大小写),并追加“.scala”为文件扩展名。 (如果文件名和对象名称不匹配,程序将无法编译)。

    示例: 假设“HelloWorld”是对象的名称。那么该文件应保存为'HelloWorld.scala“

  • def main(args: Array[String]) - Scala程序从main()方法开始处理,这是每一个Scala程序的强制程序入口部分。

Scala修饰符:

所有的Scala的组件需要名称。使用对象,类,变量和方法名被称为标识符。关键字不能用作标识符和标识是区分大小写的。Scala支持以下四种类型标识符:

文字标识符

字母数字标识符开始以字母或下划线,可以使用字母,数字或下划线。“$”字符在Scala中是保留关键字,标识符不能使用。以下是合法的字母标识符:

age, salary, _value,  __1_value

以下是非法标识符:

$salary, 123abc, -salary

运算符标识

运算符识别符由一个或多个运算符字符。操作字符是可打印的ASCII字符,如+, :, ?, ~ 或#。以下是合法的运算符标识:

+ ++ ::: <?> :>

Scala编译器将在内部“轧”操作符标识符使它们成为合法的Java标识符,并嵌入$字符。例如,所述标识符:->将内部表示为$colon$minus$greater。

混合标识符

混合标识符由一个字母数字识别符,随后是一个下划线和运算符标识。以下是合法的混合标识符:

unary_+,  myvar_=

在这里,作为一个方法名unary_+定义了一个一元+运算符和myvar_=用来作为方法名称定义了一个赋值运算符。

立即数标识符

一个文字标识是包含在反引号(` . . . `)的任意字符串。以下是合法的文字标识:

`x` `<clinit>` `yield`

Scala关键字:

下面的列表显示在Scala中的保留字。这些保留关键字不可以被用作常量或变量,或任何其他的标识符名称。

abstract case catch class
def do else extends
false final finally for
forSome if implicit import
lazy match new null
object override package private
protected return sealed super
this throw trait try
true type val var
while with yield  
- : = =>
<- <: <% >:
# @    

Scala中的注释

Scala支持单行和多行注释非常类似于Java。多行注释可以嵌套,但必须正确嵌套。可用的任何注释和所有字符都将被Scala编译器忽略。

object HelloWorld {
   /* This is my first java program.  
    * This will print 'Hello World' as the output
    * This is an example of multi-line comments.
    */
   def main(args: Array[String]) {
      // Prints Hello World
      // This is also an example of single line comment.
      println("Hello, world!") 
   }
}

空行和空格:

仅包含空格,可能带有注释行,被称为一个空行,并且Scala将会完全忽略它。标记可以通过空格和/或注释分开。

换行符:

Scala是面向行的语言,语句可以用分号(;)结束或换行符。分号在声明的结尾通常是可选的。可以键入一个想要的,如果语句出现其本身在一行。在另一方面,如果写在一行多个语句分号是必需的:

val s = "hello"; println(s)

Scala包:

包是一个代码命名的模块。例如,Lift 实用包net.liftweb.util。包声明是在源文件中的第一个非注释行,如下所示:

package com.liftcode.stuff

Scala的包可以被导入,使他们能够在当前编译范围内被引用。下面的语句是导入scala.xml包的内容:

import scala.xml._

可以导入封装的类和对象,例如,从scala.collection.mutable导入HashMap:

import scala.collection.mutable.HashMap

可以从一个单一封装的scala.collection.immutable包导入多个类或对象,例如,TreeMap和TreeSet:

import scala.collection.immutable.{TreeMap, TreeSet}