@malloc

导航

Scala基础

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) }

posted on 2019-03-05 20:58  malloc+  阅读(132)  评论(0编辑  收藏  举报