問題タブ [companion-object]
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.
scala - scala コンパニオン オブジェクトから Controller のメソッドを呼び出す
私のプロジェクトには、コンパニオン オブジェクトでそのメソッドを呼び出したいソケット メソッドを持つコントローラーがあります。これが私のコードサンプルです:
android - lateinit アプリ インスタンスが初期化されていないため、アプリがクラッシュする
Application インスタンスを保存して、databaseHelper のコンストラクターで使用しようとしていますが、アクティビティが databaseHelper をインスタンス化しようとすると、次の例外が発生します。
例外につながるコードは次のとおりです。
ForecastProvider には、次のコンパニオン オブジェクトがあります。
ForecastDb のコンストラクターは、次のように宣言された App.instance を参照する ForecastDbHelper のインスタンスを参照します。
データベースを参照するすべてのコードにコメントを付けると、アプリはデータ ソースとして ForecastServer を使用して動作しますが、データベースを参照しようとすると、つまりアプリ インスタンスを参照しようとすると、Kotlin は UninitializedPropertyAccessException をスローします。
私は何時間もコードを見てきましたが、何が間違っているのかわかりません。どんな助けでも祝福されます、事前に皆さんに感謝します.
scala - コンパニオン オブジェクトの apply メソッド内で New Keyword を使用する
scala でコンパニオン オブジェクトを使用するのに少し混乱しています。複数のコンストラクターを提供する場合は、通常、コンパニオン オブジェクトを宣言し、apply
メソッドをオーバーロードします。しかし、この2つの方法の違いは何ですか?:
私が見たほとんどすべての例は、最初の形式を使用しています。
- コンパニオン オブジェクト ファクトリと new キーワードをいつ使用するか
- Scala の「new」キーワード
- http://alvinalexander.com/scala/how-to-create-scala-object-instances-without-new-apply-case-class
しかし、私のコードは両方の形式を使用して同じように動作するようです。キーワードの使用new
は、通常のクラスがある場合にのみ意味がありますか? (ケースクラスではない)?
oop - Kotlin - クラスのinitブロックの前にコンパニオンオブジェクトを初期化することは可能ですか?
Kotlin クラスcompanion object
のブロックの前に初期化することは可能ですか? init
もしそうなら、どのように?そうでない場合、同じことを達成する方法はありますか。
次のシナリオがあります。
呼び出すprintAllStatics
と、null ポインター例外が発生します。
scala - SPARK REPL でエラーが発生し (A への参照はあいまいです)、Intellij と Scala REPL で正常に動作しますか?
サンプルコードがあります:
このコードは Intellij で正常に動作します。そして私に出力を与えます:
しかし、 REPL でこれを実行しようとすると:
次のエラーが表示されます:
ここで何が欠けていますか? 詳しく教えていただけると助かります。
scala - 関数型プログラミングでカウンターを実装する方法
コンパニオン オブジェクトを理解しようとしているときに、クラスがインスタンス化された回数をカウントする次のコードを記述しました。カウントを維持するには、「var」を使用する必要がありました。同じタスクを達成するための「関数型プログラミング」の方法、つまり不変変数を使用する方法はありますか。
java - コンパニオンオブジェクトの暗黙的な関数をオーバーライドするには?
私は Scala と暗黙の変換が初めてです。
私は、制御できない既存の scala ライブラリを使用しています。ライブラリのクラス R を考えてみましょう。
クラス R を拡張して、その動作のほとんどすべてをオーバーライドしています。しかし、この新しいクラスは Java クラスです。これをAとしましょう。
問題は、私の制御フローのある時点で、制御が R の暗黙の宣言にジャンプし、最終的に任意の機能に RFunctions クラスを使用することです。
RFunctions に存在するメソッドは、拡張クラス A にも実装されています。暗黙的な変換をバイパスまたは回避する方法がわかりません。
どんなアイデアでも大歓迎です。
scala - Scala: コンパニオン オブジェクトで暗黙を使用する
scala でコンパニオン オブジェクトを作成し、インポートせずobject
に暗黙の関数を使用しようとしています。class
しかし、コードをコンパイルしようとすると、エラーが発生しますtype mismatch;
。暗黙的に自動的にインポートできないようです。以下は私のコードです:
クラスで使用import ImplicitTest5._
している場合、コンパイルして正常に実行されます。Programming in Scala, Page: 478によると、問題なく動作し、インポートを定義する必要はありません。
この場合、変換DollarToEuroはタイプ Dollar に関連付けられていると言われています。コンパイラは、Dollar 型のインスタンスから変換する必要があるたびに、そのような関連付けられた変換を見つけます。変換をプログラムに個別にインポートする必要はありません。
私のサンプルで何か問題が発生していますか、それとも私の理解が誤解を招いていますか?
scala - 拡張クラスのコンパニオン オブジェクトの Scala Implicit Conversion
Java で customRDD を作成しようとしています。
RDDは、 で定義されているScala 暗黙関数を使用RDD[(K,V)]
するように変換されます。PairRDDFunctions[K,V]
rddToPairRDDFunctions()
object RDD
私はCustomJavaRDD
which extends CustomRDD
which extends で同じことをしようとしていますRDD
。
rddToCustomJavaRDDFunctions()
これで、に遭遇するたびに暗黙の関数を呼び出す必要がありますCustomJavaRDD[(K,V)]
が、何らかの理由でrddToPairRDDFunctions()
.
私は何を間違っていますか?
RDD.scala
CustomRDD.scala
PairCustomJavaRDDFunctions.scala
エラーはありません。data: RDD
プログラムは正常にコンパイルされますが、のインスタンスであるとしましょうCustomJavaRDD
。
実行時に;に変換data
されます。PairRDDFunctions
つまり、 RDD.scalarddToPairRDDFunctions
で定義されたへの暗黙的な呼び出しを行います。
ただし、 CustomRDD.scalarddToCustomJavaRDDFunctions
で定義されたを呼び出して、 に変換する必要があります。PairCustomJavaRDDFunctions
scala - Scala - 封印された抽象クラスを拡張するケース オブジェクトのリストを作成する
コンパニオン オブジェクトにケース オブジェクトのリストを作成しようとしています。オブジェクトはすべて、封印された抽象クラスから継承します。しかし、コンパイラは、リスト内の各項目に対して「見つかりません: 値 CompositeSpectrum」などと言っています。シールされたクラス オブジェクトとケース オブジェクトはすべて正常にコンパイルされます。コンパニオン オブジェクトで List を作成しようとすると、エラーが発生します。