Описание тега value-class

1 ответ

Расширенные методы в оболочке класса логических значений

В моей кодовой базе я использовал теги для кодирования некоторой информации в типы. Как работает тэги используя t.asInstanceOf[T @@ U] Я мог бы избежать многих проблем с записью отображения между упакованными и развернутыми значениями. Недавно я уда…
06 июн '17 в 17:02
2 ответа

Почему значение класса scala #toString содержит информацию о классе дела?

Классы значений могут использоваться для обеспечения безопасности типов без дополнительных затрат на распаковку. У меня сложилось впечатление, что во время выполнения такие типы / классы "не существовали бы", рассматриваясь как простые типы (наприм…
28 ноя '16 в 11:46
1 ответ

Scala: класс значений против класса дел

Я пытаюсь обнаружить различия между использованием класса значения или класса дела в данном сценарии. Предположим, я хочу смоделировать mod 5 целых чисел как уникальный тип данных. Вопрос в том, с чего мне начать... class IntegerMod5(val value: Int)…
01 янв '16 в 04:56
4 ответа

Проверки в классах значений

SIP-15 подразумевает, что можно использовать классы значений для определения, например, новых числовых классов, таких как положительные числа. Возможно ли закодировать такое ограничение, чтобы нижележащий> 0 в отсутствие конструктора без необходимос…
14 окт '15 в 22:17
1 ответ

Ресурс-прокси класс… C++ лучшие практики

У меня есть общая проблема - написать оболочку C++ для библиотеки C… мое основное хранилище - указатели C-Struct, которые всегда представляют класс C++, содержащий только ОДНУ поданные данные. class MyClassC { struct MyStructS * hdl ... } создание в…
17 июн '18 в 09:31
1 ответ

Иерархия классов значений в Scala?

Я определил следующую иерархию классов, где я хочу ограничить параметр типа для соответствия Double... sealed abstract class Quantity[-T](value: T)(implicit ev: T <:< Double) case class DiscreteQuantity(value: Long) extends Quantity[Long](valu…
04 дек '16 в 05:56
1 ответ

Вносит ли наследование в неявные классы значений накладные расходы?

Я хочу применить классы значений scala к одному из моих проектов, потому что они позволяют мне обогащать определенные примитивные типы без больших накладных расходов (я надеюсь) и оставаться безопасными для типов. object Position { implicit class Po…
14 май '13 в 09:25
1 ответ

Еще одна попытка создания Anyval Option

Я пытаюсь реализовать опцию, которая не использует дополнительную память для оболочки. Я создаю класс. Нуль обозначает None, ненулевое значение обозначает Some. class Maybe[+T](private val nullable: T) extends AnyVal { @inline final def isDefined: B…
27 апр '17 в 10:48
0 ответов

Почему не используются встроенные фабричные методы для классов значений?

Рассматривать: class Wrap(val amount :Int) extends AnyVal object Wrap { @inline final def apply(int :Int) = new Wrap(int) } object Playground { val w = Wrap(1) } составление с (2.11.7) scalac -feature -Xprint:all Playground.scala я вижу Playground.t…
01 июн '16 в 14:06
1 ответ

Scala Запретить выделение классов значений

Согласно документации по классам значений, они могут быть выделены при ряде обстоятельств: Сводка распределения класс значения рассматривается как другой тип. класс значений присваивается массиву. делать тесты типов во время выполнения, такие как со…
13 май '16 в 09:57
1 ответ

Разверните операции класса типов над элементами с помощью макросов

Предполагая следующую настройку: trait A[L] { def op(l1:L, l2:L): L } trait E[L] { def op(l:L): L } implicit def some2E[L:A](self:L) = new E[L] { def op(other:L) = implicitly[A[L]].op(self,other) } Есть ли способ напрямую расширить m op n в a.op(m,n…
03 июн '14 в 12:20
5 ответов

Путаница с ценностными классами

Я ищу пояснения к определению классов на основе значений. Я не могу представить, как последняя точка (6) должна работать вместе с первой (1) они являются окончательными и неизменяемыми (хотя могут содержать ссылки на изменяемые объекты) (6) они могу…
28 ноя '17 в 09:44
5 ответов

Классы значений вводят нежелательные публичные методы

Глядя на некоторые scala-docs моих библиотек, мне показалось, что есть некоторый нежелательный шум от классов значений. Например: implicit class RichInt(val i: Int) extends AnyVal { def squared = i * i } Это вводит нежелательный символ i: 4.i // arg…
30 июл '13 в 10:20
3 ответа

Класс значений Scala, варианты использования

Я знаю value class в Scala встроенная операция во время компиляции. может быть так case class A(i: Int) extends AnyVal { def +(that: A) = A(this.i + that.i) } A(1) + A(2) // After compile it equals to 1 + 2 Но это не имеет большого значения для меня…
20 ноя '16 в 13:24
2 ответа

Почему не работает этот почти идентичный класс значений?

Как и было обещано на http://docs.scala-lang.org/overviews/core/value-classes.html, это работает: class Wrapper(val self: Int) extends AnyVal { def toHexString: String = java.lang.Integer.toHexString(self) } println(12.toHexString) Но это не компили…
25 янв '15 в 04:33
2 ответа

Множественное наследование класса значений scala

В моем проекте есть объекты, которые представляют идентификаторы. Допустим, это ChairId, TableId, LampId. Я хочу, чтобы они все унаследовали от GenericId. И я хочу иметь возможность звонить def f(x: GenericId) = x.id Я хочу, чтобы они держали только…
31 июл '16 в 16:02
1 ответ

Сопоставление с классами значений в Akka

Я создал Value Class final class Feature(val value: Vector[Double]) extends AnyVal к match против этого класса в scala: val d = new Feature(Vector(1.1)) s match { case a:Feature => println(s"a:feature, $a") case _ => println("_") } Это работае…
17 фев '17 в 12:06
1 ответ

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

У меня есть класс значений (позиция) с двумя двойными (х и у) в нем. У меня также есть класс корабля, у которого есть атрибут с объектом позиции. Я должен быть в состоянии сделать поиск как: получить корабль в (5,7) с постоянным временем. Я также хо…
06 апр '17 в 18:02
1 ответ

Почему классы неявных значений имеют дополнительный вызов метода?

Я проверял байт-код, генерируемый неявными классами, и хотел сравнить с тем, что генерируется при расширении AnyVal, Без неявного: object Example1 { class Wrapper(val self: Int) extends AnyVal { def add(n: Int): Int = self + n } def foo(w: Wrapper):…
23 янв '17 в 19:48
1 ответ

Неявное преобразование между Scala.Long и Java.lang.Long в коллекциях

Я использую JavaConverters для перехода от Java SortedSet к вектору. val lines = function.getInstructions.asScala.toVector Моя функция getInstructions возвращает ArrayList из java.lang.Long, но для потребляющего кода требуется Scala.Long. Есть ли сп…
07 июл '14 в 21:56