Kotlin入門

【Kotlin文法】関数型 ①変数に関数を入れる方法

Sara

はじめに

Kotlin で関数を用意するときは fun キーワードを使って、以下のように書きました。

fun playSound() {
    // ここに処理を書く
}

Kotlin では変数の値として関数を入れることができるので、fun キーワードを使わずに関数を定義できます。これを「関数型」といいます。

val playSound = {
    // ここに処理を書く
}

この書き方は「ラムダ式」とも呼ばれ Kotlin では頻繁に使用します。

この記事では、簡単な例を使って書き方とルールを紹介します。

コードの実行には Kotlin PlayGround を使用しています。

変数に関数を入れる方法

1. 基本的な書き方

Step 1

まずは従来の書き方です。

Hello と表示するだけの sayHello 関数を作成して、main 関数から呼び出してみます。

このコードを Kotlin Playground で実行すると「Hello」と表示されました。

image1

Step 2

次は sayHello 関数を変数に入れてから呼び出します。

2・3行目のようにコードを追加・変更します。

2行目
val helloFunction = ::sayHello

sayHello 関数を変数 helloFunction に入れています。

:: は関数参照演算子というもので、sayHello 関数を参照するためにつけています。

3行目
helloFunction()

変数 helloFunction には関数が入っているので、呼び出すときは () をつける必要があります。

このコードを実行すると、先ほどと同じように Hello と表示されます。

image2

Step 3

次は sayHello 関数を変数にします。

2行目の :: を削除して、6行目を変更します。

2行目
val helloFunction = sayHello

今回は sayHello 関数ではなく、変数 sayHello を参照するので :: は不要になります。

6〜8行目
val sayHello = {
    println("Hello")
}

これが最初に紹介した「関数型」という fun キーワードを使わずに関数を定義できる書き方です。

このコードの実行結果も同じように Hello と表示されます。

image3

2. 型と戻り値

変数を用意するときは、変数名の後ろにを書きました。

val message: String = "こんにちは"

関数にもパラメータ(引数)戻り値の型を書きましたね。

fun getSize(height: Int, width: Int): Int {
    return height*width
}

関数型の場合も、パラメータや戻り値を書くことができます。

val sayHello: (パラメータ) -> 戻り値の型 = {
    println("Hello")
}

sayHello 関数

sayHello 関数は「Hello と表示するだけの関数」なのでパラメータも戻り値もありません。

この場合はどちらも省略できるので書いていませんが、省略せずに書くと以下のようになります。

Kotlin では、戻り値がない場合は Unit 型 となります。

image4

パラメータや戻り値がある場合の例も見ていきましょう。

例① パラメータあり+戻り値なし

String 型のパラメータを受け取って表示する関数です。

戻り値がない関数なので Unit 型にしています。

受け取ったパラメータは name という変数で使用できるようにしています。

変数名は自由に変更できて、パラメータが1つの場合は it を使うこともできます(例②で紹介)。

実行結果

image5

例② パラメータあり+戻り値あり

この関数では Int 型のパラメータを受け取って String 型の値を返しています。

パラメータが1つの場合は it で値を使うことができます。

実行結果

image6

例③ パラメータが複数+戻り値あり

この関数では Int 型と Boolean 型のパラメータを受け取って String 型の値を返しています。

今回はパラメータが2つなので coin, isLoggedIn という名前をつけています。

実行結果

image7

注意点

今回書いた関数はすべて最後の行を結果として返すので、値を返すための return キーワードを省略することができました。

しかし最後の行だけを返すので、例③の

"Coin: $coin, Status: $status"

"Coin: $coin"
"Status: $status"

と2行に分けて書くと、最後の Status: Offline だけが表示されます。

Coin: 25 という文字列は表示されないので注意しましょう。

image8

関連リンク

Subscribe
Notify of
0 Comments
古い順
新しい順 人気順
Inline Feedbacks
View all comments
ABOUT ME
Sara
Sara
運営者
書籍やオンライン講座でプログラミングを勉強してフリーランスのプログラマーになりました。
このサイトでは「わかりやすく・シンプル」をモットーに、プログラミングの基礎からアプリ開発まで紹介します。
独学でプログラミングを勉強をしている方、基礎は勉強したけれど次に何をすれば良いか分からない...という方のお役に立てるサイトを目指しています。
主な使用言語:Java / Kotlin / PHP
>> 詳しいプロフィール
>> お問い合わせ
>> 書籍を出版しました!
本格的に学びたい方へ

Code for Fun プログラミング講座

POINT 01

動くコード

プログラミングの文法を学んでも、そこからどのようにアプリ開発ができるのかイメージが湧きにくいものです。

Code for Fun のプログラミング講座では、ゲームやカレンダーなどアプリとして機能するものを作りながらプログラミングを学ぶことができます。

POINT 02

自分のペースで

オンライン講座なので、ご自身のペースで学習を進めて頂けます。

受講期限もないので、いつでも前のレッスンに戻ることができるので安心です。

お申し込みしたその日からすぐに始めることができます。

POINT 03

個別サポート

プログラミング学習では、エラーが起きることはよくあります。そんな時はお気軽にお問い合わせください!

コメント欄またはメールによるサポートを回数無制限でご利用頂けます。(*講座に関連するご質問のみ対応)

今すぐ無料でお試し

0
この記事にコメントするx
記事URLをコピーしました