質問
Scala-Armプロジェクトでは、次のようなコードが表示されます。
def managed[A : Resource : Manifest](opener : => A) : ManagedResource[A] = new DefaultManagedResource(opener)
誰かが[A:リソース:マニフェスト]の意味を説明できますか?
解決
def managed[A : Resource : Manifest](opener : => A) : ManagedResource[A] = new DefaultManagedResource(opener)
意味
def managed[A](opener : => A)(implicit r: Resource[A], m: Manifest[A]) : ManagedResource[A] = new DefaultManagedResource(opener)
あなたが見ることができます テキストをリンクします 7.4コンテキストの境界とビュー境界 詳細については。
他のヒント
より簡単な例を使用して説明します。
def method[T : Manifest](param : T) : ResultType[T] = ...
表記 T : Manifest
あることを意味します コンテキストバインド. 。プログラムの他の場所では、範囲では、シングルトンまたはタイプの価値を定義する必要があります Manifest[T]
それは暗黙的であるとマークされています。
これは、メソッド署名を書き換えて、2番目の(暗黙の)パラメーターブロックを使用することによって達成されます。
def method[T](param : T)(implicit x$1 : Manifest[T]) : ResultType[T] = ...
あなたの例が示すように、同じ方法の署名で複数のコンテキスト境界を使用できます。それらをビューの境界と組み合わせることも可能です。
所属していません StackOverflow