をタイプを識別してきました次は、ScalaはJavaのより表現力ある側面の構造的にScalaの
一つは、それはあなたが表現できていることですこれらの事。 Scalaでは、パラメータを取らずUnit(Javaではvoidと似ています)を返すcloseメソッドを持つものがあります。他の制約と組み合わせることもできます。あなたは言うことができます:これらの署名を持つこれらの特定のメソッドをさらに持つ特定のクラスから継承するもの。あるいは、あなたは言うことができます:このクラスから継承するものは、特定のタイプの内部クラスを持つものです。本質的に、タイプを構造的に特徴づけるには、そのタイプで何が必要かを言うことで、それらのタイプで作業することができます。
構造的にタイプを特定するには、Scalaでスニペットを書くことができますか?それを読んだ後、私は次のことを行うことができるはずな感覚を持っている:
type CanClose { def close: Unit }
val closeableFile: CanClose = new File()
val closeableStream: CanClose = new Stream()
を得る理由です
。 Googleの「Scala構造型」については、さらに詳しい情報があります。 – Jesper
あなたの例については '' CanClose = {def close:Unit} ''( '='に注意してください) ''ファイル ''を意味する '' java.io.File'を ''閉じる'メソッド。 – Jesper