私は、.nameIsMuchTooLongAndIsStillNotClear
のメソッドを含むKotlinネイティブライブラリオブジェクトを使用して、Kotlinで作業しています。 typealias
と同じように、メソッドのエイリアスを作成したいので、何かを.shortAndClear
と呼ぶことができます。少し問題を複雑にするために、これらの関数にはいくつかのパラメータがあり、その多くはラッパーで前処理したくないデフォルトを持っています。さらなる研究の後、それはまだextension functionのように思えます。長いメソッド名のエイリアスとしてのKotlin拡張メソッド?
のは、私がString.beg
と呼ばれるString.startsWith
のエイリアス型エクステンションを作成したいとしましょう、テストするのは簡単です例機能を使用します。
inline fun String.beg(prefix: CharSequence, ignoreCase: Boolean = false) = startsWith(prefix, ignoreCase) // works ok
しかし、これは私がすべての引数とそのデフォルト値をリストすることを要求しているようだ、とすべての過負荷のためにそう:私は簡単に以下のソリューションが動作するように取得することができます。問題の実際のメソッドのシグネチャは、より多くのデフォルトを持つとかなり長くなります。「自分自身を繰り返さない」の精神で、function reference〜String::startsWith
を使用できる方法があります。これにより、すべての引数を列挙する必要はありません?私はいくつかの形式を試してみたが、それらのどれも動作しません:
// none of these work:
fun String.beg = String::startsWith
fun String.beg = this::startsWith
val String.beg: (CharSequence, Boolean) -> Boolean = String::startsWith