【Kotlin練習問題】デフォルト引数

問題

今回はKotlinにおけるデフォルト引数に関する確認問題です。前回の名前付き引数の問題でも、デフォルト引数に関しては少し説明しましたね。

Javaにおいて以下のような関数foo()のオーバーロードがあるとします。

public String foo(String name, int number, boolean toUpperCase) {
    return (toUpperCase ? name.toUpperCase() : name) + number;
}
public String foo(String name, int number) {
    return foo(name, number, false);
}
public String foo(String name, boolean toUpperCase) {
    return foo(name, 42, toUpperCase);
}
public String foo(String name) {
    return foo(name, 42);
}

これらのJavaのオーバーロードを表すコードはKotlinを使えば一つの関数で置き換えることができます。

以下のコード内の関数foo()の宣言を変更して、上記のコードと同じ挙動をするようにしてください。

fun foo(name: String, number: Int, toUpperCase: Boolean) =
        (if (toUpperCase) name.toUpperCase() else name) + number

fun useFoo() = listOf(
        foo("a"),
        foo("b", number = 1),
        foo("c", toUpperCase = true),
        foo(name = "d", number = 2, toUpperCase = true)
)

リンク先のKotlin公式サイトが提供しているKotlin Playgroundでブラウザ上で簡単にコードの編集・動作確認ができます!便利ですね!

[expander_maker id=”1″ more=”ヒント” less=”非表示”]

ヒント:デフォルト引数の使い方

foo(“a”)は引数にStringしか渡されていません。この場合、Javaのほうのオーバーロードを確認すると、numberには42、toUpperCaseにはfalseが渡される仕様になっています。

Kotlinにおいて引数に値が渡されなった場合のデフォルト値の設定方法は

number: Int = 42のようにパラメーター設定をします。

[/expander_maker] [expander_maker id=”1″ more=”答え” less=”非表示”]

答え

fun foo(name: String, number: Int = 42, toUpperCase: Boolean = false) =
        (if (toUpperCase) name.toUpperCase() else name) + number

fun useFoo() = listOf(
        foo("a"),
        foo("b", number = 1),
        foo("c", toUpperCase = true),
        foo(name = "d", number = 2, toUpperCase = true)
)
[解説]

useFoo()内では、fooを四回呼び出しています。一回目ではname “a”のみを渡しているため、numberとtoUpperCaseにはデフォルト値として42,falseが入ります。

同様に二回目では、nameとnumberのみが渡されているため、toUpperCaseにはfalseが自動で入ります。

あらかじめデフォルト値を設定しておくことで、Javaのように何度もオーバーロードをする必要が無くなります。

[/expander_maker]

その他の問題はこちらからどうぞ。

完全無料で通えるプログラミングスクール

プログラミング学習はどうしても一人だとつまづいてしまう時がきます。調べればわかることも少なくないですが、最初のうちは調べ方もわからないことが多いため、あまり効率的ではありません。

効率的かつ挫折せずにプログラミングを学習したい方はスクールを検討してみるのも一つの手です。

中には無料で通えるスクールや、就職保証をしてくれるスクールなどもあるので、きっとあなたの目的に応じて最適のスクールが見つかります!以下の記事で評判がよく特におすすめのスクールをいくつかピックアップしているので、スクール選びで後悔したくない方は御覧ください!

https://codelabsjp.net/best-programming-school/

おすすめ書籍

Kotlinの文法をまず学びたい!という方には以下の書籍がおすすめです。Kotlinは日本語書籍がまだ豊富とは言えない状況ですが、細かく解説されており、Kotlin入門者のかたでもつまずくことなく学習できると思います。

[itemlink post_id=”1743″]

実際にアプリを作りながら覚えていきたい!という方には以下もお勧めです。はじめに上の書籍で文法をさらっと学んでから取り組むのがお勧めです。

[itemlink post_id=”1745″]