问题标签 [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.

0 投票
1 回答
499 浏览

scala - 从 scala 伴随对象调用 Controller 的方法

我的项目中有一个控制器,它有一个套接字方法,我想在伴生对象中调用该方法。但不知何故,我无法做到这一点,因为我还需要将参数传递给伴生对象,而我不能。这是我的代码示例:

0 投票
3 回答
5224 浏览

android - 应用程序崩溃,因为 lateinit 应用程序实例未初始化

我正在尝试保存一个 Application 实例并在 databaseHelper 的构造函数中使用,但是当我的活动尝试实例化 databaseHelper 时,出现以下异常:

导致异常的代码如下:

ForecastProvider 具有以下伴随对象:

ForecastDb的构造函数引用了ForecastDbHelper的一个实例,其构造函数引用了App.instance,声明如下:

如果我注释所有引用数据库的代码,应用程序使用 ForecastServer 作为数据源,但是当我尝试引用数据库并因此引用应用程序时,Kotlin 抛出 UninitializedPropertyAccessException。

我一直在看代码几个小时,无法弄清楚我做错了什么。任何帮助都是有福的,提前感谢大家。

0 投票
2 回答
231 浏览

scala - 在伴随对象的 apply 方法中使用 New 关键字

在 scala 中使用伴生对象我有点困惑。当您想提供多个构造函数时,通常会声明一个伴生对象并重载该apply方法。但是这两种方式有什么区别呢?:

我见过的几乎所有示例都使用第一种形式:

但我的代码似乎使用两种形式都一样。只有当我们有一个普通的类时,使用new关键字才有意义?(不是案例类)?

0 投票
2 回答
9987 浏览

oop - Kotlin - 是否可以在类中的 init 块之前初始化伴随对象?

是否可以在 Kotlin 类中companion object的块之前初始化一个?init如果是这样,怎么做?如果没有,有没有办法完成同样的事情。

我有以下情况,

并且调用printAllStatics会导致空指针异常。

0 投票
1 回答
451 浏览

scala - 在 SPARK REPL 上给出错误(对 A 的引用不明确)并且在 Intellij 和 Scala REPL 中工作正常?

我有一个示例代码:

此代码在 Intellij 中运行良好。并给我输出:

但是当尝试在 REPL 上执行此操作时:

它给了我以下错误:

我在这里想念什么?如果可以,请详细解释,这将很有帮助。

0 投票
3 回答
8203 浏览

scala - 如何以函数式编程方式实现计数器

在尝试理解伴随对象时,我编写了以下代码来计算类被实例化的次数。我不得不使用'var'来保持计数。是否有一种“函数式编程”方式来实现相同的任务,即使用不可变变量。

0 投票
1 回答
188 浏览

java - 如何覆盖伴随对象的隐式函数?

我是 Scala 和隐式转换的新手。

我正在使用我无法控制的现有 scala 库。让我们考虑图书馆中的 R 类。

我正在扩展 R 类以覆盖它的几乎所有行为。但是这个新类是一个Java 类。我们称它为 A。

问题是,在我的控制流中的某个时刻,控件跳转到 R 的隐式声明并最终使用 RFunctions 类来实现任何功能。

RFunctions 中存在的方法也在我的扩展类 A 中实现。我不明白如何绕过或避免隐式转换。

任何想法,将不胜感激。

0 投票
2 回答
2124 浏览

scala - Scala:在伴随对象中使用隐式

我在 scala 中创建伴随对象并尝试在不导入的情况下使用object隐含函数。class但是,每当尝试编译代码时,我都会遇到错误type mismatch;似乎它无法自动导入隐含。以下是我的代码:

当我import ImplicitTest5._在课堂上使用时,它会编译并运行良好。根据Programming in Scala, Page: 478它可以正常工作,并且不需要定义导入。

在这种情况下,转换dollarToEuro被称为与Dollar 类型相关联。每次需要从 Dollar 类型的实例进行转换时,编译器都会找到这样的关联转换。无需将转换单独导入您的程序。

我的样本出了什么问题,或者我的理解有误导性?

0 投票
1 回答
417 浏览

scala - 扩展类伴生对象的Scala隐式转换

我正在尝试用 Java 创建一个 customRDD。

RDD转换RDD[(K,V)]PairRDDFunctions[K,V]使用rddToPairRDDFunctions().object RDD

我正在尝试对我的CustomJavaRDDwhich extends CustomRDDwhich extends做同样的事情RDD

现在它应该rddToCustomJavaRDDFunctions()在遇到时调用隐式函数CustomJavaRDD[(K,V)],但由于某种原因它仍然会去rddToPairRDDFunctions()

我究竟做错了什么?

RDD.scala

自定义RDD.scala

PairCustomJavaRDDFunctions.scala

没有错误;程序编译成功,但假设我有data: RDD一个CustomJavaRDD.

在运行时它转换dataPairRDDFunctions; 即它对RDD.scalarddToPairRDDFunctions中定义的隐式调用。

但它应该调用CustomRDD.scalarddToCustomJavaRDDFunctions中定义的并将其转换为.PairCustomJavaRDDFunctions

0 投票
2 回答
1344 浏览

scala - Scala - 创建一个扩展密封抽象类的案例对象列表

我正在尝试在伴随对象中创建案例对象列表。这些对象都继承自一个密封的抽象类。但是编译器对列表中的每个项目都说“未找到:值 CompositeSpectrum”等等。密封的类和案例对象都编译得很好,只是当我尝试在伴随对象中创建列表时,我得到了错误。