[英]Four different functions with different return type, same error
I am studying scala and slick. 我正在学习scala和slick。 And I got an error like this: 我收到这样的错误:
found : Option[Int]
required: Int
def update(c: Color): Int = findById(c.id).update(c)
I am not sure what is found
and required
stand for. 我不确定found
什么并required
代表什么。 So I add other functions: 因此,我添加了其他功能:
def update(c: Color): Int = findById(c.id).update(c)
def update2(c: Color): Option[Int] = findById(c.id).update(c)
def update3(c: Color): String = findById(c.id).update(c)
def update4(c: Color): Unit = findById(c.id).update(c)
And expecting different found
and required
, but same error came out: 并期望found
和required
不同,但出现相同的错误:
found : Option[Int]
required: Int
def update(c: Color): Int = findById(c.id).update(c)
found : Option[Int]
required: Int
def update2(c: Color): Option[Int] = findById(c.id).update(c)
found : Option[Int]
required: Int
def update3(c: Color): String = findById(c.id).update(c)
found : Option[Int]
required: Int
def update4(c: Color): Unit = findById(c.id).update(c)
Why same error came out? 为什么会出现相同的错误? What is found and required stand for? 找到什么并要求代表什么? Thanks. 谢谢。
The source of the error message is this part of your code 错误消息的来源是代码的这一部分
findById(c.id)
This part is the same for all four examples given. 对于给出的所有四个示例,此部分都是相同的。 Thus the same error message. 因此,相同的错误消息。
findById( id ) expects an Int as an argument but c.id returns an Option[Int] . findById(id)需要一个Int作为参数,但是c.id返回一个Option [Int] 。
A possible solution would be to map over c.id 一种可能的解决方案是在c.id上进行映射
c.id map ( id => findById(id) update c )
then it would return an Option[Int] as required by your update2 . 那么它将根据您的update2的要求返回Option [Int]。
Or you could use a for comprehension which would return an Int as your function update requires. 或者您可以使用for理解 ,这将在您的函数更新需要时返回一个Int值。
for {
id <- c.id
elem = findBy(id)
} yield elem.update(c)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.