3
これら2つの関数宣言の違いは何ですか?スカラのジェネリック関数と多相引数型の違いは何ですか?
def fn[T <: A](t: T): Unit =()
def fn(a: A): Unit =()
これら2つの関数宣言の違いは何ですか?スカラのジェネリック関数と多相引数型の違いは何ですか?
def fn[T <: A](t: T): Unit =()
def fn(a: A): Unit =()
これはUniversal
多型の2つのサブタイプである:Parametric
& Inclusion
(継承/サブタイプ)。彼らは自分自身の賛同を&短所だが、この特定のケースについてはの違いは、私が想像できることは、型多型のためにあなたが機能をオーバーロードする可能性を見逃している(含める多形性の貴重な部分です)。例えば
:
class A
class B // extends A // - if it is needed
class Foo {
def fn(t: A): Unit =()
def fn(t: B): Unit =() // - is OK
}
class Boo {
def fn[T <: A](t: T): Unit =()
def fn[T <: B](t: T): Unit =() // - is not OK (func names conflict)
}
は、あなたが '[A]'一般的な第二の機能が欠けていますか? – Alec
@Alec私は 'A'は型であり型パラメータではないと思います。 –
@YuvalItzchakov。まあまあ。それ以外の場合は、どちらも機能しません。 :) – Alec