我尝试了各种解决方案,但未能找到正确的解决方案
predict_proba()
输出应该是 - > 2
答案 0 :(得分:1)
正确的解决方案是避免在List
中混合类型。如果您有Any
类型,那么您就在角落里。编译器不知道元素的类型,因此它不会让你对它们做任何有意义的事情。
发布问题的唯一方法是将元素转换为所需的类型,这是非常糟糕的Scala风格。这也很危险。如果你投不正确,程序就会爆炸。
scala> list.last.asInstanceOf[List[Int]](1)
res0: Int = 2
如果你必须告诉编译器元素类型是什么,那么你就不会充分利用编译器和/或语言。
答案 1 :(得分:0)
我可以想到几种方法,但是,如上所述,更准确的打字会更好。
list match {
case _ :: _ :: (_ :: elem :: Nil) :: Nil => Some(elem)
case _ => None
}
当然,这种模式是根据您的确切用例“列表”量身定制的,并且在很多情况下无法找到您的号码。比如在'list'中找到第一个List元素并获取它的第二个元素
list.collectFirst {
case _ :: elem :: _ => elem
}
但同样,这可能无法满足您的所有需求。要在“列表”中找到第n个List元素的第m个元素,您可以
list.collect {
case l: List[_] => l // compiler warning maybe?
}.lift(n).flatMap(_.lift(m))