質問

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] = ...

あなたの例が示すように、同じ方法の署名で複数のコンテキスト境界を使用できます。それらをビューの境界と組み合わせることも可能です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top