問題タブ [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.

0 投票する
1 に答える
667 参照

kotlin - Kotlinで拡張関数のレシーバーパラメーターをインライン化するにはどうすればよいですか?

この質問に触発されて、拡張関数のレシーバーパラメーターをインライン化するにはどうすればよいか考えていました。理論的には、次のようになります。

それpredicateがレシーバー関数になります。

crossinlineさて、上記のコードでは、コンパイラが;が必要だと不平を言うと思います。ただし、次の警告が表示されます。

警告: インライン化による予想されるパフォーマンスへの影響public inline operator fun <T> ((T) -> Boolean).not(): (T) -> Booleanはわずかです。インライン化は、関数型のパラメーターを持つ関数に最適です

これは、コンパイラがその関数のレシーバーをインライン化していないと私に信じさせます。inlineまたはのみを追加するとcrossinline、構文エラーが発生します。

2 番目の関数をインライン化できないと、最初の関数よりもパフォーマンスが低下します。

そのレシーバーパラメーターをインライン化するようにコンパイラーに指示する方法はありますか?

0 投票する
2 に答える
249 参照

lambda - ラムダとレシーバーの理解に関する混乱

コトリン バージョン 1.2.50

YouTube https://www.youtube.com/watch?v=gPH9XnvpoXEのこのチュートリアルのいくつかの例に従っています。そして、私が理解したことがいくつかありますが、まだいくつかの混乱があります. 以下のコードにコメントを残しましたが、何が起こっているのかわかりません。

0 投票する
2 に答える
245 参照

kotlin - 不明な型への Kotlin 拡張関数

指定されていない値の型を返す関数で拡張関数を使用することは可能ですか?

エラーを避けるためにこれを行う必要がありますが、本当に1行にしたいのです。

そして、最初の例で得られるエラーは

何か案は?

編集:詳細情報

get 関数の宣言は次のとおりです。

0 投票する
1 に答える
255 参照

android - Kotlin - 拡張関数の引数に基づいて Picasso の RequestCreator を変更する

ImageViewクラスへの拡張機能があります。渡された引数に従って画像をロードする方法について、いくつかのロジックを実装しました。しかし、ここで私は立ち往生しています。これらfit()centerCrop()などはピカソの を返しRequestCreatorますが、これは後で (引数に基づいて) 変更するために構築することもできません (パッケージ プライベート コンストラクターがあります)。これを行う方法がわかりません。私がこれを行うことができた唯一の方法は、以下に示すとおりです (注意してください: 目が出血し始めます)。それを行うための「通常の」「良い」方法が見つかりません。

だから私はあなたに尋ねています:これを行うにはどうすればよいですか?

}

0 投票する
0 に答える
61 参照

generics - kotlin 汎用関数の曖昧さの解消

バックグラウンド:

私は小さなコードジェネレーターに取り組んでいます。コードが実際に生成される前にコードヒントがないという通常の問題を回避したいと思います。これを解決するために、生成しようとしている種類の一般的な汎用ダミー メソッドを作成しました。

これにより、アイデアのヒントが提供されます。実際の特定のメソッドが生成された後

それらを使用する必要があります。

問題:

残念ながら、これにより次のエラーが発生します。

コンパイラが最も具体的な実装を選択することを望んでいましたが、そうではないようです。

これらの署名を明確にする方法はありますか?