gpt4 book ai didi

scala - 为什么我不能在 for-yield 表达式上调用方法?

转载 作者:行者123 更新时间:2023-12-03 15:06:41 25 4
gpt4 key购买 nike

假设我有一些这样的 Scala 代码:

// Outputs 1, 4, 9, 16, 25, 36, 49, 64, 81, 100
println( squares)

def squares = {
val s = for ( count <- 1 to 10 )
yield { count * count }
s.mkString(", ");
}

为什么我必须使用临时 val s?我试过这个:
def squares = for ( count <- 1 to 10 )
yield { count * count }.mkString(", ")

无法使用此错误消息进行编译:
error: value mkString is not a member of Int
def squares = for ( count <- 1 to 10 ) yield { count * count }.mkString(", ")

不应该 mkStringfor 返回的集合上调用环形?

最佳答案

缺少括号。您想调用mkString for 的结果的方法-表达。如果没有额外的括号,编译器会认为您想调用 mkString -方法 {count * cout}这是一个 Int .

scala> def squares = (for ( count <- 1 to 10 ) yield { count * count }).mkString(", ")
squares: String

scala> squares
res2: String = 1, 4, 9, 16, 25, 36, 49, 64, 81, 100

无论如何,我建议你应该使用 map方法代替:
scala> 1 to 10 map { x => x*x } mkString(", ")
res0: String = 1, 4, 9, 16, 25, 36, 49, 64, 81, 100

关于scala - 为什么我不能在 for-yield 表达式上调用方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2955370/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com