88817


やさしいKotlin入門という書籍のp267のコード39.6で以下のコードに出会いました。

[code]

        fun main() {
        val p1 = Person("タケシ", 5)
        val p2 = Person("ケンタ", 5)
        val p3 = Person("ユミ", 8)
        val list = listOf(p1,p2,p3)
        val list_filtered = list.filter{p:Person -> p.age==5}
        list_filtered.forEach{println("${it}は5歳です")}
    }
    
    data class Person(val name: String, val age: Int)
    
[/code]

私は`list.filter{p:Person -> p.age==5}`のラムダ式で何をしているのかがよくわかりません。  
filter関数がラムダ式でtrueを返すインスタンスを集めてリストを作成しているのは分かるのですが、`p: Person`のところや
`->`が指す意味がよくわかりません。稚拙な質問かもしれませんが、答えてくれるとありがたいです。よろしくお願いします。


CC BY-SA 4.0
2022-05-14T04:40:16.317
88808
2022-05-14T15:34:18.863
52612
question
kotlin
kotlinの以下のフィルター関数のパラメーターで何をしているのか教えてください。


正確な説明は、公式リファレンスの次の箇所にあります。

  * [Lambda expression syntax](https://kotlinlang.org/docs/lambdas.html#lambda-expression-syntax)
  * (少し古い)非公式日本語訳: [ラムダ式の構文](https://dogwood008.github.io/kotlin-web-site-ja/docs/reference/lambdas.html#%E3%83%A9%E3%83%A0%E3%83%80%E5%BC%8F%E3%81%AE%E6%A7%8B%E6%96%87)

> `p: Person`のところや `->`が指す意味がよくわかりません。

無名関数で書くと次のようになりますが、見比べると分かる通り、 `->` の左側は仮引数の宣言、右側が関数本体です。  
(`->` 自身は単なる仮引数宣言部と本体部の区切り記号です。)

[code]

        val isAge5 = fun(p: Person): Boolean =
            p.age == 5
    
        val list_filtered = list.filter(isAge5)
    
[/code]


CC BY-SA 4.0
2022-05-14T15:34:18.863
88817
2022-05-14T15:34:18.863
2808
88808
answer