Kotlin学習ノート(四)-関数補完
2385 ワード
kotlin 。
前回、変長関数について、変長関数のvarargパラメータに伝達したいパラメータが多すぎる場合、直接配列を伝達できますか?答えは肯定的で、配列の前に*を加えるだけです.例:
val size = asNub(1,2,*arr,3)
kotlinの関数はファイルのトップレベルで宣言できます.これは、javaのようにクラスに依存する必要はありません.トップレベルの関数は異なるパッケージに作用することができます. kotlinはローカル関数をサポートし、白点が関数ネストであることを示します.公式の例:
fun reachable(from:Vertex, to:Vertex):Boolean{
val visited = HashSet()
fun dfs(current: Vertex) {
if (current == to) return@reachable true// @
if (!visited.add(current))return
for(v in current.neighbors)
dfs(v)
}
dfs(from)
return false
}
関数に汎用パラメータがある場合は、宣言時に関数名に
を付けます. テール再帰関数、kotlinは関数テール再帰をサポートし、実質的に再帰ではなくループであり、再帰の可能性のあるスタックオーバーフローの問題を回避し、定義時にtailrecを使用すると、コンパイラは再帰を最適化し、効率的で迅速なループで置き換えます.例を見てみましょう.
tailrec fun findFixPoint(x:Double=1.0):Double=
if (x == Math.cos(x)) x else findFixPoint(Math.cos(x))
高次関数とは、パラメータが関数として使用できる関数です.たとえば、次のようになります.
fun addFun(list : List,f : ( T , T ) -> T) : T?{
var x:T? = null
list.add(f(test1,test2))
return list
}
2番目のパラメータは2つのパラメータを持つ関数で、戻り値はTタイプです. kotlinはまた、a.length>b.length
のような字面関数を使用することもできる. 字面関数は閉パッケージにアクセスできます.閉パッケージ、すなわち、自分の範囲外の宣言にアクセスする量 kotlinの関数については、javaとの文法の差が少ないため、まだいくつかの内容が話されていません.しかし、まだ細かい点がたくさんありますが、本人は考えていません.後期にkotlinのプロジェクトを勉強するとき、また強固にします.