Scala 【 3 循环、函数和参数 】

2023-03-09 14:43:21 浏览数 (2)

scala 语句

scala 语句默认就是一行,要是一行里面多行就用分号等隔开。

块表达式,指的是 {} 中的值,其中可以包含多条语句, 最后一个语句的值就是快表达式的值。

Scala 输入输出

可以直接使用 Java 的 System.out.println 这一类,也可以直接使用 println 和 print ,格式化输出可以使用 printf。

readLine 允许我们从控制带读取用户输入的数据,类似 Scanner 和 System.in 的作用。

循环

while do 循环使用和 Java 中一样。

for 循环不支持类似这种

代码语言:javascript复制
for (int i = 0; i < n; i    )

但是可以这个样子:

代码语言:javascript复制
var n = 10
for(i <- 1 to n )println(i   " ")

使用 until 可表示不达到上限,如下输出为 1 - 9。

代码语言:javascript复制
var n = 10
for (i <- 1 until n) println(i)

还可以直接遍历字符串,比如:

代码语言:javascript复制
for (c <- "Hello World")println(c)

输出结果就是每个字符都是一行。

跳出循环语句:scala 里面没有 break,使用 boolean 类型变量或者 return 或者 Breaks 的 break 函数来代替。

多重 for 循环:

代码语言:javascript复制
for (i <- 1 to 9 ; j <- 1 to 9)

if 守卫:

代码语言:javascript复制
for (i <- 1 to 10 if i % 2 == 0) print(i)

for 推导式:

代码语言:javascript复制
for (i <- 10) yield i

推导式会将这个东西构造成集合。

scala 函数

scala 既可以面向对象又可以面向语言。

定义函数用 def 开头,和 python 差不多.

代码语言:javascript复制
 def getName(name:String) = {
 函数内容
 }

没有等于号默认没有返回值。

代码最后一行的返回值就是函数的返回值,不适用 return。

如果在函数体内递归调用函数体,则必须手动给出函数的返回类型。

如果我们调用时不给出参数的具体值,使用自身的默认值,就需要在定义函数时就定义,这样子传递参数的时候就可以不传这个。

在调用函数的时候,可以不按照函数定义的参数顺序来传递参数,使用带名参数的方式来传递。

当然还可以混合使用,但是未命名参数必须要填写在前面。

函数的变长参数

scala 中可能需要将函数定义的参数个数为可变的形式,此时需要使用变长参数。

要是有返回值一定要有 = 。

0 人点赞