我试图从元组列表(例如Unit
)中获取一些小于2的音节数之间的差异。
如果可以,我会退回 - 但是,我遇到了一些问题:我发现String
并且预计会 def ecrire():String = {
// Choose deux output: List[(Word, Word)]
// I take every tuple of the list and proceed as the element "b"
for (b <- choose_deux()){
val x = b._1
val y = b._2
val diff = Math.abs(x.syllabes - y.syllabes)
// Check if difference between syllables is smaller than 2
if(diff <= 2)
return x.toString() + "\n" + y.toString()
}
}
}
。
type mismatch; found: Unit; required: String
现在我知道可能我必须在底部做一个收益率,但产生什么呢?这个想法是,如果条件显示在&#34; if&#34;受到尊重,我写了由这两个元素组成的字符串。
错误显示在for循环中:<Route path="/guide/:name/:id" component={pro}/>
答案 0 :(得分:1)
类型不匹配错误是因为你的for循环没有else语句,如果在for循环中你不能返回。因此,循环不返回任何内容,因此scala编译器假定返回类型为(),即unit(),并且您已将返回类型定义为String。
以下列方式定义功能应解决您的问题
def diff(x) = Math.abs(x._1.syllabes - x._2.syllabes)
for (b <- choose_deux() if(diff(b) <= 2)) yield b._1.toString() + "\n" + b._2.toString()