Scala初学者为理解和功能

时间:2017-02-09 17:35:05

标签: scala yield for-comprehension

嘿伙计们,我是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);

我只是想测试一个数字是否为素数。我真的不得不说,我得到了synac和typ的真正问题。即使我只是将“真实”放在产量上它也不起作用?

1 个答案:

答案 0 :(得分:3)

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

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

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

yield ? for理解正在遍历从1n的一系列数字。他们中的一些人会通过你的if条件而一些人不会。现在你已经有了一个新的数字列表。你应该如何将其变成Boolean取决于你。