Scalaの高次関数
2818 ワード
高次関数:関数に関数を渡す
最初の高次関数:
formatResultは高次関数であり、彼は関数fをパラメータとして受け入れ、パラメータのタイプはInt=>Intであり、整数を受け入れ、整数結果を返すことを示す.
マルチステート関数は、通常、高次関数を書くときに、書き出すコードが任意のタイプに適用され、「マルチステート関数」と呼ばれ、「汎用関数」と呼ばれることもあります.
関数partiallには、A,B,Cの3つのタイプのパラメータがあります.これには2つのパラメータがあり、パラメータfは2つのタイプがそれぞれA、Bのパラメータ、戻り値タイプがCの関数である.関数partialの戻り値も関数で、タイプはB=>Cです.一、isSortedメソッドを実装し、Array[A]が所定の比較関数に従ってソートされているかどうかを検出する.
二、一つの高次関数を実現し、二つの関数を一つの関数
ANSWERS:
二、
最初の高次関数:
def formatResult(name:String,n:Int,f:Int=>Int)={
val msg="The %s of %d is %d."
msg.format(name,n,f(n))
}
formatResultは高次関数であり、彼は関数fをパラメータとして受け入れ、パラメータのタイプはInt=>Intであり、整数を受け入れ、整数結果を返すことを示す.
マルチステート関数は、通常、高次関数を書くときに、書き出すコードが任意のタイプに適用され、「マルチステート関数」と呼ばれ、「汎用関数」と呼ばれることもあります.
def partiall[A,B,C](a:A,f:(A,B)=>C):B=>C
関数partiallには、A,B,Cの3つのタイプのパラメータがあります.これには2つのパラメータがあり、パラメータfは2つのタイプがそれぞれA、Bのパラメータ、戻り値タイプがCの関数である.関数partialの戻り値も関数で、タイプはB=>Cです.一、isSortedメソッドを実装し、Array[A]が所定の比較関数に従ってソートされているかどうかを検出する.
def isSorted[A](as:Array[A],ordered(A,A)=>Boolean):Boolean
二、一つの高次関数を実現し、二つの関数を一つの関数
def compose[A,B,C](f:B=>C,g:A=>B):A=>C
に組み合わせることができるANSWERS:
、
def isSorted[A](as: Array[A], ordered: (A,A) => Boolean): Boolean = {
@annotation.tailrec
def go(n: Int): Boolean =
if (n >= as.length-1) true
else if (ordered(as(n), as(n+1))) false
else go(n+1)
go(0)
}
二、
def compose[A,B,C](f: B => C, g: A => B): A => C =
a => f(g(a))