我是Scala的新手,我有一个函数(有效)
object Utiles {
def func(param: String, param2: String): String = {
// Do Somthing
true
}
}
在另一个文件中,我正在成功使用此功能,但是当我将其插入过滤器时,会出现错误
list.filter(value => {
Utiles.func(value.param ,value.param2)
})
我得到的错误是:
type mismatch;
found : String
required: None.type
Utiles.func(value.param ,value.param2)
知道我在做什么错吗?
答案 0 :(得分:4)
您在这里遇到了三个问题(由于该问题是我目前所写的,所以可以看到):
func
函数无法编译。您已将函数的返回类型设置为String
,但您正在返回Boolean
(true)。要么更改返回类型,要么通过返回String结束函数。 .filter(...)
要求您做出正确或错误的判断。如果将func
的返回类型更改为Boolean
,此问题将得到解决。如果您的返回类型是假定为String
,则需要将该String
与某事物进行比较。例如:
List("foo", "bar").filter(x => func(x) == "baz")
您的类型不匹配错误是因为您似乎正在将String
传递到您的func
函数中,而该函数期望None.type
(出于某种原因)。
我的意思是,您没有给我们Minimal, Complete, and Verifiable example。我已经按照您介绍的代码调试了代码,但是我有一种强烈的感觉,您试图将实际函数缩减到错误(以及函数本身)毫无意义的地步。
答案 1 :(得分:2)
如果您发现filter
带有谓词
def filter(p: A => Boolean): List[A]
这意味着您在List[SomeData]
上的过滤器功能应为SomeData => Boolean
。
示例:
scala> def fun(param1: String, param2: String): Boolean = param1 == param2
fun: (param1: String, param2: String)Boolean
scala> List("updupd", "whatwhat").filter(p => fun(p, "updupd"))
res0: List[String] = List(updupd)
答案 2 :(得分:1)
我不确定您如何在其他地方使用func
,因为返回类型错误。应该是Boolean
:
object Utiles {
def func(param: String, param2: String): Boolean = {
// Do Somthing
true
}
}