三. Scala基础语法

来源:互联网 发布:制作招生简章的软件 编辑:程序博客网 时间:2024/05/05 02:34

Scala基础语法

如果你是一名Java程序员,并了解Java语言的基础知识,这将有助于快速学会Scala基础语法。
Scala与Java的最大区别是Scala语句末尾的分号;是可选的。我们可以认为Scala程序是对象的集合,通过调用彼此的方法来实现消息传递。接下来我们详细介绍类、对象、方法,实例变量的概念:
* 对象:对像有属性和行为。例如猫(对象)的状态属性有:颜色,名字; 行为有:叫、吃,跑等。
* 类: 类是对象的抽象,而对象是类的实例。
* 方法:方法描述的基本的行为,一个类可以包含多个方法。
* 字段:每个对象都有它唯一的实例变量集合,即字段。对象的属性通过给字段赋值来创建。

1.第一个Scala程序

1.1 交互式编程

交互式编程不需要创建脚本文件,可以通过以下命令调用:

Last login: Mon Apr 24 09:49:18 on ttys000itlocals-MacBook-Pro:~ david.tian$ scalaWelcome to Scala 2.12.2 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_112).Type in expressions for evaluation. Or try :help.scala> 1 + 1res0: Int = 2scala> println("Hello World!")Hello World!scala> 

1.2脚本形式

我们也可以通过创建一个HelloWorld.scala的文件来执行代码,HelloWorld.scala代码如下:

object HelloWorld {        def main(args: Array[String]) {                println("Hello World!")        }}

1.3用scalac命令编译:

itlocals-MacBook-Pro:scalaPMR david.tian$ scalac HelloWorld.scala itlocals-MacBook-Pro:scalaPMR david.tian$ lsHelloWorld$.class  HelloWorld.class    HelloWorld.scalaitlocals-MacBook-Pro:scalaPMR david.tian$ 

1.4编译后运行

编译成功后,可以看到目录下生成了HelloWorld.class文件,该文件可以在JVM (Java Virtual Machine)上运行。编译成功后,可以用scala命令来执行程序:

itlocals-MacBook-Pro:scalaPMR david.tian$ scala HelloWorldHello World!

2.0 Scala基本语法说明

2.1 Scala语法说明

  • 区分大小写: Scala是大小写敏感;
  • 类名:对所有类名的第一个字母要大写;
  • 方法名称:所有的方法名称的第一个字母用小写。
  • 程序名称:程序文件的名称应当与对象名称完全匹配。
  • def main(args: Array[String]) - Scala程序从main()方法开始处理,这是每一个Scala程序的强制程序入口部分。

3.0 标识符

Scala可以使用两种形式的标识符,字符数字和符号。
字符数字使用字母或者下划线开头,后面可以接字母或是数字,符号”"Scala"”开头的标识符为保留的Scala编译器产生的标识符使用,应用程序应当避免使用”$”开始的标识符,以免造成冲突。
Scala的全名规则采用和Java类似的camel命名规则,首字符小写,比如toChar。类名的首字符还是使用大写。此外也应该避免使用以下划线结尾的标志符以避免冲突。符号标志符包含一个或多个符号,如+,:,? 等,比如:

+ ++ ::: < ?> :->

Scala 内部实现时会使用转义的标志符,比如:-> 使用 colonminusgreaterJava访:>使Scalacolonminusgreater。
混合标志符由字符数字标志符后面跟着一个或多个符号组成,比如 unary_+ 为 Scala 对+方法的内部实现时的名称。字面量标志符为使用”定义的字符串,比如 x yield
你可以在”之间使用任何有效的 Scala 标志符,Scala 将它们解释为一个 Scala 标志符,一个典型的使用为 Thread 的 yield 方法, 在 Scala 中你不能使用 Thread.yield()是因为 yield 为 Scala 中的关键字, 你必须使用 Thread.yield()来使用这个方法。

4.0 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 - : = => <- <: <%
:
# @

5.0 Scala注释

Scala 类似 Java 支持单行很多行注释。多行注释可以嵌套,但必须正确嵌套,一个注释开始符号对应一个结束符号。注释在 Scala 编译中会被忽略,实例如下:

object HelloWorld {   /* 这是一个 Scala 程序    * 这是一行注释    * 这里演示了多行注释    */   def main(args: Array[String]) {      // 输出 Hello World      // 这是一个单行注释      println("Hello, world!")    }}

6.0 空行和空格

一行中只有空格或者带有注释,Scala 会认为其是空行,会忽略它。标记可以被空格或者注释来分割。

7.0 换行符

Scala是面向行的语言,语句可以用分号(;)结束或换行符。Scala 程序里,语句末尾的分号通常是可选的。如果你愿意可以输入一个,但若一行里仅 有一个语句也可不写。另一方面,如果一行里写多个语句那么分号是需要的。例如:

val s = "Hello World!"; println(s)

8.0 Scala包

定义包
Scala 使用 package 关键字定义包,在Scala将代码定义到某个包中有两种方式:
方法和 Java 一样,在文件的头定义包名,这种方法就后续所有代码都放在该包中。 比如:

package com.dvtnclass HelloWorld

9.0 引用

Scala 使用 import 关键字引用包。

import java.awt.Color  // 引入Colorimport java.awt._  // 引入包内所有成员def handler(evt: event.ActionEvent) { // java.awt.event.ActionEvent  ...  // 因为引入了java.awt,所以可以省去前面的部分}

import语句可以出现在任何地方,而不是只能在文件顶部。import的效果从开始延伸到语句块的结束。这可以大幅减少名称冲突的可能性。
如果想要引入包中的几个成员,可以使用selector(选取器):

import java.awt.{Color, Font}// 重命名成员import java.util.{HashMap => JavaHashMap}// 隐藏成员import java.util.{HashMap => _, _} // 引入了util包的所有成员,但是HashMap被隐藏了

* 注意:默认情况下,Scala 总会引入 java.lang._ 、 scala._ 和 Predef._,这里也能解释,为什么以scala开头的包,在使用时都是省去scala.的。*

0 0
原创粉丝点击