Scala类型

时间:2014-09-29 11:33:41

标签: scala

我的自定义类型定义如下:

type MyType = (String, String)

当我使用这种类型时,我总是要经历我讨厌的元组编号。我当然可以执行以下操作并解压缩内容如下:

val (str1, str2) = myType

我可以为这种类型创建一个伴侣对象,并且有两个方法可以给出元组中的第一个和第二个元素吗?我想宁愿做以下事情:

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

2 个答案:

答案 0 :(得分:13)

  

我可以为这种类型创建一个伴侣对象,并且有两个方法可以给出元组中的第一个和第二个元素吗?

当然,这就是案例类的作用。

如何

case class MyType(str1: String, str2: String)

没有诉诸笨拙的别名?

答案 1 :(得分:3)

这个怎么样:

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