::オペレータの呼び出しに失敗する

投稿者: Anonymous

https://kotlinlang.org/docs/reference/reflection.html

上記リファレンスに載っている::オペレータによる関数名を直接指定する方法を試そうとしたのですが、エラーを吐いてしまいました。

C:> C:optkotlinbinkotlinc-jvm
Welcome to Kotlin version 1.0.3 (JRE 1.8.0_91-b15)
Type :help for help, :quit for quit
>>> fun isOdd(x: Int) = x % 2 != 0
>>> val numbers = listOf(1, 2, 3)
>>> numbers.filter(::isOdd)
error: left-hand side of a callable reference with a receiver parameter cannot be empty. Please specify the type of the receiver before '::' explicitly
numbers.filter(::isOdd)
                 ^

エラーによると「型を明示してください」と出ているようですが、正しくはどう書けばよいのでしょうか?

解決

Please refer to this question if you are able to read english.
https://stackoverflow.com/questions/33616464/function-references-and-lambdas

basically, make a extension or a function without class.

fun Int.isOdd()

英語で良ければ、以下の質問を参考にしてください。
https://stackoverflow.com/questions/33616464/function-references-and-lambdas

基本的には、extension か クラス抜きの関数を作ればよいです。

fun Int.isOdd()
回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *