Описание тега companion-object

In [tag:Scala], an object with the same name as a class, used to hold utility members for the class
1 ответ

В чем разница между классом с сопутствующим объектом и классом и объектом с одинаковым именем?

"Сопутствующий объект" класса Scala можно рассматривать как одноэлементный объект с тем же полностью определенным именем, что и у класса (то есть с тем же именем в том же пакете). Они используются для хранения служебных функций, общих для всех экзем…
1 ответ

Убедитесь, что параметрический тип имеет сопутствующий объект

Я хотел бы сделать что-то вроде этого (и, пожалуйста, не спрашивайте почему): trait A[T /* tell that there exists companion for T */] { def f = T.g } Можно ли этого добиться?
18 ноя '17 в 14:56
1 ответ

Завод Scala игнорируется компилятором?

Я потратил все это время, собирая метод фабрики в моем объекте-компаньоне, вот так: class Stuff(val a: Int, val b: Long) { this() = this(0,0L) } object Stuff { def apply(a:Int, b:Int) = new Stuff(a, b.toLong) } Но когда я подумал, что убиваю его, я …
22 авг '12 в 05:47
2 ответа

Когда использовать фабрику сопутствующих объектов по сравнению с новым ключевым словом

Многие классы в стандартной библиотеке Scala используют apply() их сопутствующий объект как фабрика. Это часто удобно, когда цепочки вызовов, такие как List(List(1)), С другой стороны, все еще возможно создавать объекты непосредственно с new (new Ha…
28 авг '15 в 20:48
1 ответ

Классификатор JSONObject не имеет объекта-компаньона и поэтому должен быть здесь инициализирован

import org.json.JSONObject JSONObject deviceInformation = ... Я пытался создать объект-компаньон, как это, но на самом деле не работает... извините, довольно нуби в Java и Kotlin.... и да, JSONObject правильно импортируется с import org.json.JSONObj…
10 окт '18 в 17:54
1 ответ

Сопутствующий объект как фабрика в Scala

Я только начинаю со Scala и работаю над некоторыми уроками. Я наткнулся на объект-компаньон и использовал их как фабрику. Я попробовал несколько вещей. Однако я не получаю следующее, чтобы работать должным образом. Не могу получить мою голову вокруг…
02 июн '13 в 19:21
1 ответ

Когда неявный объект импортируется из объекта-компаньона?

Я знаю, что это уже сотый вопрос о имплицитах / сопутствующих объектах. Однако я нигде не нашел этот случай. В "Tryout", почему A не требуется импорт для неявного класса, а B это нужно? Thankx. class LongConsumer { def consume(l: Long) = Unit } case…
3 ответа

Создайте сопутствующий объект, который смешивается в признаке, определяющем метод, который возвращает объект класса сопутствующего объекта.

Абстрактная проблема: Создайте признак, который можно смешать с сопутствующим объектом класса, чтобы дать этому объекту метод, который возвращает объект этого класса. Конкретная проблема: я пытаюсь создать группу классов для использования с вызовами…
1 ответ

Сопутствующие объекты скрывают класс - ошибка или особенность?

В Kotlin следующий код кажется разумным: data class Foo(val bar: String) { fun combine(other: Foo): Foo { return Foo(bar + other.bar) } companion object Foo { fun someHelper() {} } } Тем не менее, он не компилируется: тип Foo привязывается к Foo.Foo…
2 ответа

Передача универсального сопутствующего объекта в супер конструктор

Я пытаюсь построить trait и abstract class подтипить сообщениями (в среде воспроизведения Akka), чтобы я мог легко преобразовать их в Json, Что сделали до сих пор: abstract class OutputMessage(val companion: OutputMessageCompanion[OutputMessage]) { …
21 янв '19 в 16:01
2 ответа

Сопутствующий объект с функцией расширения в kotlin?

Я хотел бы иметь функцию расширения и использовать logger из kotlin-logging и иметь константы внутри объекта-компаньона. Моя функция: fun String.toFoo(): Foo { logger.debug { "Mapping [$this] to Foo" } if(MY_CONST.equals(this) { ... } Вопрос, где я …
1 ответ

Синглтон - init не вызывается

Я хочу создать синглтон в Kotlin, поэтому я сделал объект-компаньон следующим образом: companion object { val INSTANCE = MessagesManager() } Есть кое-что, что я хочу сделать в его конструкторе, поэтому я написал некоторый код в функции init, но он н…
13 фев '19 в 11:04
3 ответа

Фабричный дизайн шаблона в Scala с кейсом

Я пытаюсь реализовать шаблон проектирования фабрики в Scala, используя методы apply, доступные для объекта-компаньона. У меня есть следующий подход. sealed trait MyType { def param: String } case class TypeA(param: String) extends MyType case class …
05 сен '14 в 13:25
1 ответ

Доступ к переменной класса-компаньона из другого класса

Я действительно новичок в скале. Я пытаюсь получить доступ к переменной класса компаньона за пределами класса. Как мне это сделать, если это вообще возможно без создания экземпляра класса. В следующем примере я могу получить доступ к INTERNAL_COST_R…
09 июл '15 в 09:49
2 ответа

Сопутствующий объект не может получить доступ к закрытой переменной класса

Довольно странное поведение, исходящее из Scala REPL. Хотя следующее компилируется без проблем: class CompanionObjectTest { private val x = 3 } object CompanionObjectTest { def testMethod(y:CompanionObjectTest) = y.x + 3 } приватная переменная, каже…
1 ответ

Почему я не вижу компонент сопутствующего объекта расширенного класса?

У меня есть абстрактный класс: abstract class Vec2t и расширяющийся класс: class Vec2 : Vec2t Vec2t имеет следующий объект-компаньон: companion object { @JvmField val length = 2 } Но когда я печатаю Vec2.length затем он помечается как неразрешенная …
04 мар '17 в 09:40
2 ответа

Как заменить статические переменные доступными средствами в базовом классе?

Что мне нужно: trait Base { import scala.math.{Pi=>mPi, cos=>msoc, sin=>msin} static val Pi : Float = mPi.toFloat static def cos(phi : Float) : Float = mcos(phi).toFloat static def sin(phi : Float) : Float = msin(phi).toFloat // ... // some…
12 янв '13 в 15:23
2 ответа

Закрытое значение класса Scala недоступно в сопутствующем объекте.

У меня есть класс Scala и его сопутствующий объект (в Client.scala) следующим образом: class Client(val key: Int) { private val num_bits = 5 } object Client { val count_entries = Math.pow(2, num_bits).toInt println(count_entries) } Тем не менее, он …
10 окт '17 в 15:50
1 ответ

В Scala как получить доступ к приватному конструктору класса case из его сопутствующего объекта

У меня определен следующий код (в Scala IDE/Scala Worksheet с Scala 2.10): object WorkSheet1 { object A { def apply(s: String, huh: Boolean = false): A = A(s) } case class A (s: String) //case class A private (s: String) val a = A("Oh, Hai") } И я у…
2 ответа

Могу ли я в Scala объявить класс внутри объекта-компаньона?

Во время борьбы с моим личным неизменяемым конструктором класса и ограничением, которое вспомогательные конструкторы должны вызывать друг друга в качестве первого оператора, без чего-либо еще из класса в области видимости, я, похоже, вынужден исполь…
05 дек '14 в 17:07