|
def method(requests:Seq[Boolean]): Seq[Boolean] = requests.length match {
case 0 => Seq()
case 1 => Seq(true)
case _ => true +: requests.tail.init.scanLeft(requests.head)(_ || _).map(!_) //+: 是中缀操作符,右边的操作数是调用方法的对象 true放在前面
//SeqLike类中有:+和+:,其中:+是普通操作方法,将右加到左的尾部,+:则将左加到右的前部
//总结:最开始添true,去掉last元素,只要某位置出现true,则从它开始包括它在内返回的Seq中都是false
}
println(method(List(false))) //List(true)
println(method(List(false,true))) //List(true, true)
println(method(List(false,true,false))) //List(true, true, false)
val lx = List(false,true)
val lxti = lx.tail.init
println(lxti) //List()
println(lx.tail.init.scanLeft(lx.head)(_ || _)) //List(false)
|
|