我有一个使用valueObject的模板,它可能是两种风格之一,具体取决于它在我们的应用程序中使用的位置.所以我将其导入为Either:
valueObject:[ObjectA,ObjectB]
两个对象都有相同的命名属性,所以我想通过调用来检索它
valueObject.propertyA
哪个不起作用.
这样做最简洁/最好的方法是什么?
假设两个对象具有定义该属性的相同类型(或超类型/特征) - 您可以使用merge哪个返回左侧(如果存在),否则右侧,两者的最低公共类型:
scala> class MyClass {
| def propertyA = 1
| }
defined class MyClass
scala> val e1: Either[MyClass, MyClass] = Left(new MyClass)
e1: Either[MyClass,MyClass] = Left(MyClass@1e51abf)
scala> val e2: Either[MyClass, MyClass] = Right(new MyClass)
e2: Either[MyClass,MyClass] = Right(MyClass@b4c6d0)
scala> e1.merge.propertyA
res0: Int = 1
scala> e2.merge.propertyA
res1: Int = 1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1680 次 |
| 最近记录: |