我有一个自定义类型定义如下:

type MyType = (String, String)

当我使用这种类型时,我总是不得不经历我讨厌的元组编号。我当然可以执行以下操作并解压缩里面的内容,如下所示:
val (str1, str2) = myType

我可以为这种类型创建一个伴随对象并有两个方法来为我提供元组中的第一个和第二个元素吗?我宁愿做以下事情:

myType.str1 会给我第一个元素, myType.str2 会给我第二个元素。

最佳答案

这个怎么样:

scala> type MyType = (String, String)
defined type alias MyType

scala> implicit class MyPair(val t: MyType) extends AnyVal {
     |   def str1 = t._1
     |   def str2 = t._2
     | }
defined class MyPair

scala> val mt: MyType = ("Hello", "World")
mt: MyType = (Hello,World)

scala> mt.str1
res0: String = Hello

scala> mt.str2
res1: String = World

关于Scala 类型类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26098945/

10-13 09:46