Scala基础

时间:2024-11-24 08:37:20

1.seq[String]

  用[]表示参数类型,java使用<>表示参数,因为Scala 允许以<命名方法和变量名,java不允许

2.支持range的类型:Char 、Int 、 Long 、 Float 、 Double 、BigInt(任一大小整数)、BigDecimal(任意大小浮点数)

//闭区间,步长2
1 to 10 by 2
//左闭又开,步长1
1 until 10
//字符根据ASCII码递增
'd' to 'a' by 1

3.Scala返回类型Unit类型,类似java void,但Unit类型是有值的,值为().

4.java的方法名在Scala中是保留字时,使用反引号

import java.util.Scanner.`match`

5.for yield  for循环返回新的集合

val list2 = for {i <- list if(i.contains("a"))} yield i

6.可插入字符串

    val a = "a"
val b = 2f
println(s"${a}bc")
printf("%.2f\nb",b)
println(f"${b}%.2f\nb")

7.模式匹配

 在 case 子句中,以小写字母开头的标识符被认为是用来提取待匹配值的新变量。如果需要引用之前已经定义的变量时,应使用反引号将其包围。以大写字母开头的标识符被认为是类型名称

def checkY(y: Int) = {
for {
x <- Seq(99, 100, 101,"")
} {
val str = x match {
     //判断是否等于形参y需加反引号,否则相当于匹配所有输入,并把输入赋予y
case `y` => "found y!"
//判断类型是否为整型
case i: Int => "int: "+i
//匹配所有输入
case _ =>"unexpected"
}
println(str)
}

8、for推导式

  for{} yield 返回值类型为for中第一个生成器表达式的类型

  for 推导式的语法实际上是编译器提供的语法糖,它会调用容器方法 foreach 、 map 、flatMap 以及 withFilter 方法

//result类型为Vector
val list = List("a","b","c","d")
val vector = Vector("A","B","C","D")
val result = for{
vector2 <- vector
list2 <-list
list3 <- list2
} yield list3
print(result)
}