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
理解是遍历从 1
到 n
的数字序列。其中一些会通过您的 if
条件,而有些则不会。现在你有了一个新的数字列表。如何将其变成 Boolean
取决于您。
大家好,我是 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
理解是遍历从 1
到 n
的数字序列。其中一些会通过您的 if
条件,而有些则不会。现在你有了一个新的数字列表。如何将其变成 Boolean
取决于您。