Kotlin

2017-05-21 12 views
4

で戻り値の型を省略することが可能であるとき、私はKotlinに次の機能がありますに簡素化することができKotlin

fun max(a: Int, b: Int): Int { 
    return if (a > b) a else b 
} 

:前の定義に

fun max(a: Int, b: Int) = if (a > b) a else b 

にの戻りタイプを関数は省略されており、これは式本体として知られています。私は、Kotlinで関数の戻り値の型を省略することが可能な他のケースが存在するかどうか疑問に思います。

答えて

2

機能と同じです常に戻り値の型を指定する必要があります。ユニットを返すことを意図している場合を除き、明示的に指定します。

関数が有用な値を返さない場合、その戻り値の型はUnitです。 Unitは、値が1つのタイプ - ユニットです。この値は、Unit戻り型の宣言でもオプションである明示的

fun printHello(name: String?): Unit { 
    if (name != null) 
     println("Hello ${name}") 
    else 
     println("Hi there!") 
    // `return Unit` or `return` is optional 
} 

返却する必要はありません。上記のコードは、

fun printHello(name: String?) { 
    ... 
} 
1

戻り値の型がUnit

fun printHello(): Unit { 
    print("hello") 
} 

でも

fun printHello() { 
    print("hello") 
} 

と同じで、ブロック本体と

fun printHello() = print("hello") 
+0

「ユニット」とは、値を返さないことと同等ですか? – lmiguelvargasf

+1

正確には、ボイドのように –

1

と同等です。通常、関数は戻り値の型を宣言する必要があります。しかし、いくつかの関数が単一の式で構成されている場合は、中括弧と戻り値の型を省略し、returnキーワードではなく式の前に=シンボルを使用することができます。このタイプの関数は一式関数と呼ばれます。

例:コンパイラはこれを行うには、あなたを強制されます

fun add(a: Int, b: Int) = a + b 

fun add(a: Int, b: Int): Int { 
    return a + b 
} 

このコードは、のように簡略化することができます。