作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
是否可以在一个类中有一个方法来进行隐式转换。在这种情况下,我希望能够立即将表示一对事物的对象解包为二元组。
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/
我是一名优秀的程序员,十分优秀!