問題タブ [extension-function]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
kotlin - Kotlinで拡張関数のレシーバーパラメーターをインライン化するにはどうすればよいですか?
この質問に触発されて、拡張関数のレシーバーパラメーターをインライン化するにはどうすればよいか考えていました。理論的には、次のようになります。
それpredicate
がレシーバー関数になります。
crossinline
さて、上記のコードでは、コンパイラが;が必要だと不平を言うと思います。ただし、次の警告が表示されます。
警告: インライン化による予想されるパフォーマンスへの影響
public inline operator fun <T> ((T) -> Boolean).not(): (T) -> Boolean
はわずかです。インライン化は、関数型のパラメーターを持つ関数に最適です
これは、コンパイラがその関数のレシーバーをインライン化していないと私に信じさせます。inline
またはのみを追加するとcrossinline
、構文エラーが発生します。
2 番目の関数をインライン化できないと、最初の関数よりもパフォーマンスが低下します。
そのレシーバーパラメーターをインライン化するようにコンパイラーに指示する方法はありますか?
lambda - ラムダとレシーバーの理解に関する混乱
コトリン バージョン 1.2.50
YouTube https://www.youtube.com/watch?v=gPH9XnvpoXEのこのチュートリアルのいくつかの例に従っています。そして、私が理解したことがいくつかありますが、まだいくつかの混乱があります. 以下のコードにコメントを残しましたが、何が起こっているのかわかりません。
kotlin - 不明な型への Kotlin 拡張関数
指定されていない値の型を返す関数で拡張関数を使用することは可能ですか?
エラーを避けるためにこれを行う必要がありますが、本当に1行にしたいのです。
そして、最初の例で得られるエラーは
何か案は?
編集:詳細情報
get 関数の宣言は次のとおりです。
android - Kotlin - 拡張関数の引数に基づいて Picasso の RequestCreator を変更する
ImageView
クラスへの拡張機能があります。渡された引数に従って画像をロードする方法について、いくつかのロジックを実装しました。しかし、ここで私は立ち往生しています。これらfit()
のcenterCrop()
などはピカソの を返しRequestCreator
ますが、これは後で (引数に基づいて) 変更するために構築することもできません (パッケージ プライベート コンストラクターがあります)。これを行う方法がわかりません。私がこれを行うことができた唯一の方法は、以下に示すとおりです (注意してください: 目が出血し始めます)。それを行うための「通常の」「良い」方法が見つかりません。
だから私はあなたに尋ねています:これを行うにはどうすればよいですか?
}
generics - kotlin 汎用関数の曖昧さの解消
バックグラウンド:
私は小さなコードジェネレーターに取り組んでいます。コードが実際に生成される前にコードヒントがないという通常の問題を回避したいと思います。これを解決するために、生成しようとしている種類の一般的な汎用ダミー メソッドを作成しました。
これにより、アイデアのヒントが提供されます。実際の特定のメソッドが生成された後
それらを使用する必要があります。
問題:
残念ながら、これにより次のエラーが発生します。
コンパイラが最も具体的な実装を選択することを望んでいましたが、そうではないようです。
これらの署名を明確にする方法はありますか?