scala零碎知识点

REPL使用

  • scala 进入repl
  • 在repl内
    :help                 查看repl帮助
    :quit                 退出repl
    :paste                粘贴多行代码
    

scala var和val

var和val都是修饰变量的引用

  • var 变量引用可以改变,即可以指向新的对象
  • val 变量的引用不可改变,即不可以指向新的对象;但对象自身可以改变

Range

Range可以生成数字序列,可以包含尾部(to);可以不包含尾部(until);可以指定步长(by)

  • to: 1 to 10
  • until: 1 until 10
  • range: 1 to 10 by 2

类型推断

在实际编程中,你在以下情况中必须提供显式的类型注解。

  • 声明了可变的var 变量或不可变的val 变量,没有进行初始化。(例如,在类中的抽象声明,如val book: String)。
  • 所有的方法参数(如def deposit(amount: Money) = {…})。
  • 方法的返回值类型,在以下情况中必须显式声明其类型。
    1. 在方法中明显地使用了return(即使在方法末尾也是如此)。
    2. 递归方法。
    3. 两个或多个方法重载(拥有相同的函数名),其中一个方法调用了另一个重载方法,调用者需要显式类型注解。
    4. Scala推断出的类型比你期望的类型更为宽泛,如Any。

把集合转成可变参数对象

使用“liObj:-*”

示例

package com.test

object Method2{

  def joiner(str:String*):String = {
    str.mkString("-")
  }

  def joiner(li:List[String]):String={
    joiner(li:_*)
  }

  def main(args: Array[String]): Unit = {
    val newStr = joiner("hello","world","beautiful","greate")
    println(newStr)

    val li = List("1","2","3","4")
    println(joiner(li))
  }
}

sealed关键字

sealed 修饰类时,表示该类的子类必须与当前类在同一个文件中


scala中类型及成员导入

  • 正常导入

    import java.io.File

  • “_”作为通配符

    import java.io.File._

  • “{}”导入一个包下的多个类

    import java.util.{Map, HashMap}

  • “{XXX => yyy}”导入后重命名

    import java.util.{HashMap => JavaHashMap}


抽象类型与参数化类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值