Scala初学者for-​​理解和函数

Scala beginner for-comprehensions and functions

大家好,我是 scala 的新手,我不知道我在做什么错误来将正确的类型输入到 yield 语句中:

def prim(n:Int): (Boolean, List[Int]) = divsers(n) -> List(1,n) //flatMap for-comprehensions

def divsers(n:Int):Boolean=
 (for{
    d <- 1 to n
    if((n%d)->0)
   }yield(d) // <- what i need to put here to make it work with the function prim?
  )
 prim(11);

我只想测试一个数是否是质数。我真的不得不说我的语法和 typs.Even 确实有问题,如果我只在 yield 中输入 "true" 它不起作用?

你在做各种毫无意义的事情。

divsers(n) -> List(1,n) 返回第二个元素是 2 Int 列表的元组有什么意义?第一个 Int 始终是 1,第二个 Int 始终是作为参数传递给 prim().

的数字

if((n%d)->0) 您在这里创建了另一个元组。你可能想说 if (n%d) > 0.

yield ? for 理解是遍历从 1n 的数字序列。其中一些会通过您的 if 条件,而有些则不会。现在你有了一个新的数字列表。如何将其变成 Boolean 取决于您。