Scala的泛型

Scala的泛型,scala,Scala,我想为进程序列编写一个函数,如下所示: def wrap[A >: Seq[_], B](seq : A)(f : () => B): Option[B] = { if(seq.isEmpty) None else Some(f()) } 但它不起作用 错误: 如果没有,我是空的 我做错了什么?你根本不需要说关于A的任何事情。只需假设包装的第一个参数是一个Seq,然后就可以传入一个Seq或其任何子类: def wrap[B](seq : Seq[_])(f : ()

我想为进程序列编写一个函数,如下所示:

def wrap[A >: Seq[_], B](seq : A)(f : () => B): Option[B] = {
    if(seq.isEmpty) None
    else Some(f())
}
但它不起作用 错误:

如果没有,我是空的


我做错了什么?

你根本不需要说关于A的任何事情。只需假设包装的第一个参数是一个Seq,然后就可以传入一个Seq或其任何子类:

def wrap[B](seq : Seq[_])(f : () => B): Option[B] = {
    if(seq.isEmpty) None
    else Some(f())
}

wrap(List(1,2,3))(() => "hi") //returns Some("hi")

你根本不需要说任何关于A的事。只需假设包装的第一个参数是一个Seq,然后就可以传入一个Seq或其任何子类:

def wrap[B](seq : Seq[_])(f : () => B): Option[B] = {
    if(seq.isEmpty) None
    else Some(f())
}

wrap(List(1,2,3))(() => "hi") //returns Some("hi")
你做错的是>:,你需要你做错的是>:,你需要或只是seq.headOption.mapx=>只为seq.headOption.mapx=>f