records
をストリーム/コレクションとし、データをそのようなコレクションの要素から変換する関数とする。コトリン関数の参照
明示的(it)
を適用せずに
records.map {extract(it)}
を書くためKotlinにおける方法はありますか?
など。 records.map(extract)
またはrecords.map {extract}
records
をストリーム/コレクションとし、データをそのようなコレクションの要素から変換する関数とする。コトリン関数の参照
明示的(it)
を適用せずに
records.map {extract(it)}
を書くためKotlinにおける方法はありますか?
など。 records.map(extract)
またはrecords.map {extract}
を見てみますR
と入力すると、map
に直接渡すことができます。
records.map(extract)
例:
val upperCaseReverse: (String) -> String = { it.toUpperCase().reversed() }
listOf("abc", "xyz").map(upperCaseReverse) // [CBA, ZYX]
extract
はトップレベルの単一引数関数またはローカル単一引数の関数である場合は、make a function reference as ::extract
できるとmap
に渡し:
records.map(::extract)
例:
fun rotate(s: String) = s.drop(1) + s.first()
listOf("abc", "xyz").map(::rotate) // [bca, yzx]
引数のないクラスSomeClass
のメンバーまたは拡張機能の場合、SomeClass
のプロパティは、SomeClass::extract
として使用できます。この場合、records
にはSomeType
の項目が含まれ、extract
の受信者として使用されます。
records.map(SomeClass::extract)
例:Kotlin 1以来
fun Int.rem2() = this % 2
listOf("abc", "defg").map(String::length).map(Int::rem2) // [1, 0]
。1、extract
部材、または1つの引数を受け入れるクラスSomeClass
の拡張機能の場合、いくつかの受信機foo
とmake a bound callable reference缶:
records.map(foo::extract)
records.map(this::extract) // to call on `this` receiver
例:
listOf("abc", "xyz").map("prefix"::plus) // [prefixabc, prefixxyz]
(Javaに類似した)メソッド参照を使用できます。
records.map {::extract}
extract
いくつかT
ための機能タイプ(T) -> R
又はT.() -> R
の値(ローカル変数、プロパティ、パラメータ)である場合kotlinドキュメント上の関数参照例 https://kotlinlang.org/docs/reference/reflection.html#function-references
このコードは、意図した通りに動作しません。 'records'の各項目は関数参照にマップされ、N個の同一項目:: :: extract'のリストを取得します。 – hotkey