且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Scala学习笔记(2)-基础语法

更新时间:2022-09-15 08:06:25

秉着简洁而不失完整的的原则,这章只把Scala主要语法和与Java不同的内容列出来,以后章节也如此,内容以简洁为主,太长了自己都被吓着了,也没耐心看下去。

1.Scala解释器使用,这里不做介绍,有IDE这玩意一般用不着。

2.基本数据类型

Java原始类型在scala包里都有对应的类。例如,scala.Boolean对应着Java的boolean。scala.Float对应着Java的float。当你把你的Scala代码编译成Java字节码,Scala编译器将使用Java的原始类型以便获得其带来的性能益处。

3.定义变量

Scala有两种变量,val和var。val类似于Java里的final变量。一旦初始化了,val就不能再赋值了。与之对应的,var如同Java里面的非final变量。var可以在它生命周期中被多次赋值。

val msg1=”hello scala”

var msg2=”hello world”

仔细看上面定义的2个变量好像都没有类型声明,这是怎么回事呢?这就要说到Scala的类型推断(type inference),因为你用了一个字符串来初始化msg变量,Scala推断msg的类型是String。你也可以显式地定义类型,有些时候也应该这么做。显式的类型标注不但可以确保Scala编译器推断你倾向的类型,还有助于以后代码的阅读。

val msg : String=”hello scala” 与Java不同的是类型声明在变量后面,用一个”:”分隔。

4.定义函数

上面已经定义了变量,现在开始学习怎么定义一个函数

def max(x: Int, y: Int): Int = { //定义函数 
    if (x > y) x 
    else y 
  }

max(3,7)  //调用函数

自己对照看与 java函数有什么不同,函数体只有一句的大括号可以省略写成 :

def max(x: Int, y: Int) = if (x > y) x else y

结果类型也去掉了,编译器类型推断可得出,尽管如此带上结果类型也是一个好习惯,便于其他人阅读代码。

Scala学习笔记(2)-基础语法

Scala的Unit结果类型指的是函数没有返回有用的值。Scala的Unit类型比较接近Java的void类型,而且实际上Java里每一个返回void的方法都被映射为Scala里返回Unit的方法。因此结果类型为Unit的方法,仅仅是为了它们的副作用而运行

注:java里的i++和++i在scala里是行不通的。

本文来自云栖社区合作伙伴“开源中国”

本文作者:山海经

原文链接