2017-05-22 8 views
0

私はScalaでジェネリック関数を作成しようとしていますが、構文が正しく機能していません。理由を詳述できる人は誰ですか?最大値(StringまたはInt)をチェックする汎用関数

コンパイラはタイプ Bを呼び出すことができる >方法を持っていることを知っていないため、コンパイルされません
def max1[B](a1 : B, b1 : B) : B = { 
    if (a1 < b1) a1 else b1 
} 
+1

ようこそスタックオーバーフロー! – OlivierBlanvillain

+2

'a'に '<'が定義されていないため、コードはコンパイルされません。例えば、https://twitter.github.io/scala_school/advanced-types.htmlのように、注文コードを書く方法を学ぶために、タイプメスについて読んでみてください。 – OlivierBlanvillain

+0

または1つのオプションは推奨しませんが、構造型 –

答えて

0

Bに何らかの並べ替え原則がある「証拠」が見つかった場合、その証拠を使用してBのインスタンスを操作することができます。

def maxb[B](x: B, y: B)(implicit ev: Ordering[B]): B = ev.max(x, y) 
関連する問題