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

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でブラウザ上で簡単にコードの編集・動作確認ができます!便利ですね!

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

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

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

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

ヒント

答え

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のように何度もオーバーロードをする必要が無くなります。

答え

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

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

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

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

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

おすすめ書籍

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

created by Rinker
¥2,640 (2021/10/23 19:13:22時点 Amazon調べ-詳細)

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

プロフィール

プロフィール
コードラボJP

大学卒業後SEに就職、現在は退職しフリーランスとして活動中。
『初心者でも挫折せずに一人でプログラミングを学べる』をモットーに、コードラボJPを開設
お問い合わせ等はcodelabsjp@gmail.comまで

コードラボJPをフォローする
タイトルとURLをコピーしました