gpt4 book ai didi

scala - 我可以在 Scala 案例类中使用隐式转换方法吗?

转载 作者:行者123 更新时间:2023-12-01 13:56:41 25 4
gpt4 key购买 nike

是否可以在一个类中有一个方法来进行隐式转换。在这种情况下,我希望能够立即将表示一对事物的对象解包为二元组。

case class Foo(a:String, b:String) {
implicit def asTuple:(String, String) = (a,b)
}
val foo0 = new Foo("Hello", "World")

// Does not work!
val (a:String, b:String) = foo0

上面的例子是错误的。

这是我的第二次尝试 - 也失败了:

class Foo(a:String, b:String) {
val _a:String = a
val _b:String = b
}

implicit def asTuple(x:Foo):(String, String) = (x._a, x._b)

val foo0 = new Foo("Hello", "World")

// Does not work!
val (a:String, b:String) = foo0

鉴于我已经设法将隐式类型转换从一个类转换为另一个“正常工作”,我预计这里出现的问题更多与将元组定义为返回类型有关。谁能帮帮我?

最佳答案

您的第一个示例不起作用,因为您必须像在第二个示例中所做的那样在伴随对象或其他范围中定义隐式。第二个示例似乎不起作用,因为 Scala 无法一步完成模式匹配和隐式转换。相反,将最后一行更改为以下内容之一以使其工作:

val (a:String, b:String): (String, String) = foo0

val (a: String, b: String) = foo0: (String, String)

关于scala - 我可以在 Scala 案例类中使用隐式转换方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37498694/

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