本帖最后由 yuxuanchiadm 于 2019-7-19 20:14 编辑
【索引贴】https://www.mcbbs.net/thread-887515-1-1.html
前言
可以跟着教程自己在Scala REPL尝试运行相关代码。在Scala中的能通过声明 语句将一个标识符 跟一个类型 绑定起来,以供后续使用,声明语句包含以下几种:
定义 语句。
值和类型
概括的来说,使用Scala编程就是编写程序并对各种类型的值进行计算的过程。举例来说,字符串、数字、布尔值等就是在编程中常用的值,还有一些值是通过把其他的值组合起来组成新的值,例如数组、列表就是典型的例子。每一个值都有一个与其关联的类型,类型决定了能在对应的值上进行哪些运算。例如对于数字类型的值,就能对其调用进行数学计算的函数,字符串类型的值,就可以调用跟字符串相关的函数,例如获取字符串的长度。
值的声明以及定义
声明一个值后就可以将值绑定到一个标识符上去了,这样就可以通过标识符在之后(同一个作用域 内)引用这个值。需要注意的是,声明值并把值绑定上去之后,标识符所引用的值就是不可变的了。这意味着一旦将一个值通过定义,绑定到其声明的标识符上,此标识符就永远引用这个值了,而不可能在之后转而引用其他的值,即使其他的值是同样的类型。要声明一个值,需要使用val关键字 将一个标识符绑定到一个类型上去,语法如下例所示:
复制代码其中的“str”可以是任意合法的标识符(不是关键字,非数字开头,主要包含字母、数字、下划线),“String”表示这个值为字符串类型。一般来说,值需要在声明之后立即进行定义(除非当前作用域内允许进行abstract的声明),语法如下例所示:复制代码这里String类型的值"bar"绑定到了str标识符上,例如在Scala REPL中,之后就可以通过输入str来引用"bar"这个值了。
变量的声明以及定义
声明变量跟声明值几乎是同一个语法,区别在于变量是可变的,也就是说,在声明变量并把值绑定上去之后,还可以用新的值替换掉旧的值重新绑定上去,只要类型是匹配的。要声明一个值,需要使用var关键字将一个标识符绑定到一个类型上去,语法如下例所示:复制代码其中的“count”是标识符,“Int”表示这个值的类型为整型数字。同样大多数情况下,变量需要在声明之后立即进行定义,语法如下例所示:
复制代码这样就把Int类型的值0绑定到了count标识符上。
函数的声明以及定义
函数的作用是对值进行计算并返回结果值,而用Scala进行编程也就是对函数进行组合,最终组合出程序的过程。要声明一个函数,需要使用def关键字将一个标识符绑定到一个函数类型上去,例如
复制代码这样就声明了一个叫做“foo”,返回值类型为“Boolean”的函数。函数声明可以包含参数列表 ,参数列表可以有任意多个参数:
复制代码指定参数为默认参数 :
复制代码最后一个参数可以是变长参数 :
复制代码参数列表可以有多个:
复制代码同样除非当前作用域内允许进行abstract的函数声明,否则需要立即定义函数的实现,语法如下例所示:复制代码这里“!x”的值将作为函数的返回值。
函数调用
函数调用 将参数代入函数并计算出返回值,语法如下例所示:
复制代码
语句块
语句块 用于将多个语句 和表达式 依次组合成一个表达式。所有的表达式都有一个值,语句则相反不具有值。语句块的最后一项表达式的值为整个语句块的值,如果最后一项不是表达式,则整个语句块的值为“Unit”类型的唯一值“()”,此类型将在下一节详细介绍。表达式的语法如下例所示:
复制代码值、变量、函数定义也可以是一个语句块,例如:
复制代码
【索引贴】https://www.mcbbs.net/thread-887515-1-1.html
前言
可以跟着教程自己在Scala REPL尝试运行相关代码。在Scala中的能通过
值声明 变量声明 函数声明 类型声明
值和类型
概括的来说,使用Scala编程就是编写程序并对各种类型的值进行计算的过程。举例来说,字符串、数字、布尔值等就是在编程中常用的值,还有一些值是通过把其他的值组合起来组成新的值,例如数组、列表就是典型的例子。每一个值都有一个与其关联的类型,类型决定了能在对应的值上进行哪些运算。例如对于数字类型的值,就能对其调用进行数学计算的函数,字符串类型的值,就可以调用跟字符串相关的函数,例如获取字符串的长度。
值的声明以及定义
声明一个值后就可以将值绑定到一个标识符上去了,这样就可以通过标识符在之后(同一个
- val str: String
- val str: String = "bar"
变量的声明以及定义
声明变量跟声明值几乎是同一个语法,区别在于变量是可变的,也就是说,在声明变量并把值绑定上去之后,还可以用新的值替换掉旧的值重新绑定上去,只要类型是匹配的。要声明一个值,需要使用var关键字将一个标识符绑定到一个类型上去,语法如下例所示:
- var count: Int
- var count: Int = 0
函数的声明以及定义
函数的作用是对值进行计算并返回结果值,而用Scala进行编程也就是对函数进行组合,最终组合出程序的过程。要声明一个函数,需要使用def关键字将一个标识符绑定到一个函数类型上去,例如
- def foo: Boolean
- def alwaysTrue(): Boolean
- def not(x: Boolean): Boolean
- def and(x: Boolean, y: Boolean): Boolean
- def isEmpty(s: String, ignoreWhitespace: Boolean = true): Boolean
- def makeList(x: String, xs: String*): List[String]
- def assert(message: String)(cond: Boolean): Unit
- def not(x: Boolean): Boolean = !x
函数调用
- foo
- alwaysTrue()
- not(true)
- and(true, false)
- isEmpty("")
- isEmpty(" ", false)
- isEmpty(s = "bar", ignoreWhitespace = false)
- makeList("a")
- makeList("a", "b", "c")
- makeList("a", Seq("b", "c"): _*)
- assert("bar")(false)
语句块
- {
- val a: Int = 1
- val b: Int = 2
- val sum: Int = a + b
- println(sum)
- sum
- }
- val a: Int = {
- val temp: Int = 0
- temp + 1
- }
- var b: Int = {
- val temp: Int = a
- temp + 2
- }
- def foo(x: Int, y: Int) = {
- val sum: Int = x + y
- sum
- }