2017-02-15 3 views
-1
で注文を実装

は、私は次のコードがあると判断することができますMyProcessでタイプKの暗黙のOrderingを使用するにはどうすればよいですか?は、どのように私はクラスがScalaの

+1

はあなたが何をしようとしてのロジックにもっと手の込んだことはできますか?これは[XY問題](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)のような匂いがする。おそらく、より多くの情報があれば、問題をさらに分けることができ、簡単にすることができます。 –

答えて

2

まず、これを行うのはおそらく悪い考えです。しかし、あなたが本当に必要としていると確信しているなら、それは可能です。 の暗黙的な値はOrdering[K])を要求する必要があります。しかし、これはすぐに利用できません。

免責事項/警告:恥知らずな自己宣伝アップ先

私は最近、いくつかの暗黙の解像度のトリックで遊んためにgithubのにライブラリを押しました。それはあなたが探しているものをOptional typeclassが含まれています。

それを使用して、あなたのコードは次のようになります。

import implicitlogic.Optional 

class MyClass[K, V](val elements: Seq[(K, V)]) { 
    def myFunc()(implicit opt: Optional[Ordering[K]]) = opt.result match { 
    case Some(ordering) => new MyProcess[K, V](elements)(ordering) 
    case None => otherthing 
    } 

    def otherthing = ??? 
} 

class MyProcess[K: Ordering, V](val content: Seq[(K, V)]) 
+0

あなたのリプレイをありがとう、良いようです! 私は順序を取り除き、 '' 'MyProcess'''クラスのasInstanceOf [Comparable [K]]' ''を使います。 後であなたの図書館を探します。 – Djvu

+0

私は 'def myFunc()(暗黙のord:Ordering [K] = null)= if(ord ne null){...} else {...}'の前に成功しました。 – Actorclavilis

関連する問題