Type equality in Scala

前端 未结 3 1304
抹茶落季
抹茶落季 2020-12-20 15:49

Here is a little snippet of code:

class Foo[A] {
  def foo[B](param: SomeClass[B]) {
  //
  }
}

Now, inside foo, how do I:

3条回答
  •  陌清茗
    陌清茗 (楼主)
    2020-12-20 16:45

    As a side note, generalized type constraints aren't actually necessary:

    class Foo[A] {
      def foo_subParam[B <: A](param: SomeClass[B]) {...}
      def foo_supParam[B >: A](param: SomeClass[B]) {...}
      def foo_eqParam[B >: A <: A](param: SomeClass[B]) {...}
      def foo_subMyType[Dummy >: MyType <: A] {...}
      def foo_supMyType[Dummy >: A <: MyType] {...}
      def foo_eqMyType[Dummy1 >: MyType <: A, Dummy2 >: A <: MyType] {...}
    }
    

    In fact, I prefer this way, because it both slightly improves type inference and guarantees that no extraneous runtime data is used.

提交回复
热议问题