アヒルのタイプ
1.概念
アヒルのタイプは、実はダイナミックなタイプのスタイルです.このスタイルでは、オブジェクトの有効な意味は、特定のクラスから継承されたり、特定のインタフェースを実装したりするのではなく、現在のメソッドと属性の集合によって決定されます.ウィキペディアから抜粋-アヒルのタイプ
2.コード実装
Scalaのアヒルのタイプを見てみましょう.コードは次のとおりです.
2つのパラメータを受信するwithCloseの方法を定義した.
closeメソッドのタイプインスタンスこの例を受信し、戻り値のない関数次にクラスConnectionを定義し,close()メソッドを定義した.最後にwithCloseメソッドを呼び出し、テストを行います.
実はウィキペディア-アヒルのタイプの中でその偽のコードの例はとても良くて、アヒルのタイプで多態を実現することができます.もっと見て、その奥義をじっくりと味わってみたいと思いますが、これらの特性がFPの最大の魅力かもしれないと思います!
3.考える
Python,Ruby,Lispのような言語のプログラマーにとって、これは普通の特性にすぎません.しかし、私のような最初からJAVAに触れていたcoderにとって、この特性はまだ驚喜しています.インタフェースを明示的に実装することを回避し、インタフェースを定義する手間を省き、プログラム全体を非常に柔軟にします.
実は今の言語はすべてこの方面に寄りかかって、例えばgolang、先に1つのインタフェースを定義して、および方法は明らかにします.任意のクラスは、インタフェースのすべてのメソッドが実装されている限り、デフォルトでインタフェースが実装されています.明示的な
scalaの初心者として、いろいろな特性、文法に対応する暇がなくて、7分のサプライズ3分の悲しみですね.scalaは本当に博大で、対象とFPを集めた言語を作りました.私はただ言いたいだけです.物が多すぎて、把握するのが疲れています.
アヒルのタイプは、実はダイナミックなタイプのスタイルです.このスタイルでは、オブジェクトの有効な意味は、特定のクラスから継承されたり、特定のインタフェースを実装したりするのではなく、現在のメソッドと属性の集合によって決定されます.ウィキペディアから抜粋-アヒルのタイプ
2.コード実装
Scalaのアヒルのタイプを見てみましょう.コードは次のとおりです.
def withClose(closeAble: { def close(): Unit }, op: { def close(): Unit } => Unit) {
try {
op(closeAble)
} finally {
closeAble.close()
}
}
class Connection {
def close() = println("close Connection")
}
val conn: Connection = new Connection()
withClose(conn, conn =>
println("do something with Connection"))
2つのパラメータを受信するwithCloseの方法を定義した.
closeメソッドのタイプインスタンスこの例を受信し、戻り値のない関数次にクラスConnectionを定義し,close()メソッドを定義した.最後にwithCloseメソッドを呼び出し、テストを行います.
実はウィキペディア-アヒルのタイプの中でその偽のコードの例はとても良くて、アヒルのタイプで多態を実現することができます.もっと見て、その奥義をじっくりと味わってみたいと思いますが、これらの特性がFPの最大の魅力かもしれないと思います!
3.考える
Python,Ruby,Lispのような言語のプログラマーにとって、これは普通の特性にすぎません.しかし、私のような最初からJAVAに触れていたcoderにとって、この特性はまだ驚喜しています.インタフェースを明示的に実装することを回避し、インタフェースを定義する手間を省き、プログラム全体を非常に柔軟にします.
実は今の言語はすべてこの方面に寄りかかって、例えばgolang、先に1つのインタフェースを定義して、および方法は明らかにします.任意のクラスは、インタフェースのすべてのメソッドが実装されている限り、デフォルトでインタフェースが実装されています.明示的な
implemention
構文を避けるscalaの初心者として、いろいろな特性、文法に対応する暇がなくて、7分のサプライズ3分の悲しみですね.scalaは本当に博大で、対象とFPを集めた言語を作りました.私はただ言いたいだけです.物が多すぎて、把握するのが疲れています.