2016-06-22 13 views
1

私は現在高次関数について学んでおり、実装しようとしています。関数をパラメータとして渡す

def bigger(n: Integer, m: Integer):Integer={ 
    if(n>m) return n 
    else return m 
} 

def bigT(t: Tuple3[Int, Int,(Int,Int)=>Int]): Integer={ 
    return t._3(t._1,t._2) 
} 

val tup=(5,2,bigger) 

第2の関数は、2つの整数とそれらで実行される関数を含むタプルを受け取ります。

私は(ideone.comを使用して)このコードを実行しようと、次のエラーが表示さ:オブジェクトのメインでの大きな方法について

」不足している引数を、 あなたがそれを扱いたい場合は「_ `と、この方法に従ってください部分的に適用される機能 ヴァル・TUP =(5,2、大きな)」

ように私はその後

+1

が、3つのパラメータの代わりに 'bigT'を定義する方が合理的だろうか? –

答えて

0

あなたがIntegerIntを混乱される機能BIGTにTUPという名前のタプルを渡したいです。

どこでもIntを使用してみてください:

def bigger(n: Int, m: Int) = if(n > m) n else m 
def bigT(t: (Int, Int, (Int, Int) => Int)): Int = t._3(t._1, t._2) 

val res = bigT((5, 2, bigger)) // 5 
+0

ありがとう! 私はスカラーが新しくなったばかりの別の質問です:パラメータ宣言は正しいですか? 't:Tuple3 [Int、Int、(Int、Int)=> Int]'と書くことはできますか?これは間違っていますか(間違いを避けるために今どこからでもタイプを省略しますが、 – user6454491

+0

これは正しいものではありますが、通常は明示的に '' TupleX''を書くことはなく、常に ''(a、b、...) ''の表記を使用します。 –

+0

この例では、 def bigT(a:Int、b:Int、cmp:(Int、Int)=> Int):Int = cmp(a、b) 'を提案する。私の意見では、 '._1'、' ._2'の位置のメソッドはノイズが多く、この場合の可読性が傷つきます。 –

関連する問題