gpt4 book ai didi

scala - 为什么我不能将案例类的构造函数用作在 map() 内部使用的函数

转载 作者:行者123 更新时间:2023-12-05 08:38:20 25 4
gpt4 key购买 nike

如最小示例所示,编译器不接受将元组直接传递给构造函数:

scala> case class A(a:Int, b:Int)
defined class A

scala> List((1, 2)).map(A)
<console>:14: error: type mismatch;
found : A.type
required: ((Int, Int)) => ?
List((1, 2)).map(A)
^

scala> List((1, 2)).map(A _)
<console>:14: error: _ must follow method; cannot follow A.type
List((1, 2)).map(A _)
^

Scala 解析器组合子有运算符 ^^ 用于此。fastparse库中有类似的东西吗?

最佳答案

你正在寻找 .tupled

List((1, 2)).map(A.tupled)

这不能“开箱即用”的原因是因为 A 需要两个 Int 类型的参数,而不是 (Int,诠释)tupled(A, A) 提升为 ((A, A))

您可以通过修改A 的构造函数来验证这一点:

final case class A(tup: (Int, Int))

然后就可以了:

List((1, 2)).map(A)

关于scala - 为什么我不能将案例类的构造函数用作在 map() 内部使用的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63026912/

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