我有一个自定义类型的定义如下:
type MyType = (String, String)
当我使用这种类型时,我总是不得不经过我讨厌的元组编号。当然,我可以按照以下方式进行拆包:
val (str1, str2) = myType
我可以为此类型创建一个伴生对象,提供两个方法来获取元组的第一个和第二个元素吗?我希望能实现以下功能:
myType.str1 获取第一个元素,myType.str2 获取第二个元素。
我有一个自定义类型的定义如下:
type MyType = (String, String)
当我使用这种类型时,我总是不得不经过我讨厌的元组编号。当然,我可以按照以下方式进行拆包:
val (str1, str2) = myType
我能为这个类型创建一个伴生对象并有两个方法,分别给我元组的第一个和第二个元素吗?
当然可以,这就是 case class 的作用。
只需要这样:
case class MyType(str1: String, str2: String)
不采用笨拙的类型别名,该怎么办呢?
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