嘿伙计们,我是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的真正问题。即使我只是将“真实”放在产量上它也不起作用?
答案 0 :(得分:3)
你做了各种毫无意义的事情。
divsers(n) -> List(1,n)
返回元组的重点是什么?第二个元素是2个Int
的列表?第一个Int
始终为1
,第二个Int
始终是作为参数传递给prim()
的数字。
if((n%d)->0)
你在这里创造了另一个元组。你可能想说if (n%d) > 0
。
yield ?
for
理解正在遍历从1
到n
的一系列数字。他们中的一些人会通过你的if
条件而一些人不会。现在你已经有了一个新的数字列表。你应该如何将其变成Boolean
取决于你。