Вопросы по теме 'structural-typing'

Забавное наблюдение о (рекурсивных) структурных типах в Scala
Мне нужен был рекурсивный структурный тип в каком-то фрагменте кода с использованием признаков и структурного типа в качестве ограничения параметра типа. Он работал нормально, но позже я узнал, что Scala не поддерживает рекурсивные структурные типы....
1343 просмотров
schedule 16.11.2021

Почему интерфейсы должны быть объявлены на Java?
Иногда у нас есть несколько классов, которые имеют некоторые методы с одинаковой сигнатурой, но не соответствуют объявленному интерфейсу Java. Например, и JTextField , и JButton (среди нескольких других в javax.swing.* ) имеют метод public...
766 просмотров

Структурная типизация и полиморфизм - добавление супертипов
Ниже приведен пример кода (полиморфный), взятый из angular framework с использованием синтаксиса TypeScript, export abstract class AbstractControlDirective { ... } AbstractControlDirective подтипы export abstract class...
300 просмотров

Создание расширенного типа из класса case с помощью Shapeless в Scala
У меня есть этот пример кода: import java.util.UUID import shapeless.LabelledGeneric import shapeless.record._ import shapeless.syntax.singleton._ object LabelTest extends App { case class IncomingThing(name: String, age: Int) case class...
321 просмотров
schedule 28.11.2021

Как использовать структурный тип с универсальными параметрами?
У меня два кейса case class StringCaseClass(argument: String) case class IntCaseClass(argument: Int) Я хочу определить структурный тип, который будет соответствовать сопутствующему объекту обоих этих type HasApply1 { def apply[A,...
853 просмотров
schedule 27.03.2022

Почему этот статически типизированный доступ к члену думает, что это геттер?
rvm — это объект, а не функция. Почему ограничение (^b:(member ReportSubTitle:(String -> unit)) rvm ) появляется как геттер, а не сеттер? Это проблема всплывающей подсказки или что-то еще? Везде, где я использовал статически...
139 просмотров
schedule 08.05.2022

Уточнение структурного типа и равенство типов
Я наткнулся на загадочное поведение Type.=:= при применении к уточнениям типа. Учитывать: import reflect.runtime.universe._ type T1 = AnyRef { def apply( name: String ): Unit def foo: String } type Base = { def apply( name: String ): Unit...
207 просмотров
schedule 27.05.2022

Как использовать структурные типы в вызовах isInstanceOf?
Название в основном говорит об этом. Есть ли способ использовать тип e. г. new Object {def foo = "bar"} в isInstanceOf[<structural_type_here>] звонке?
282 просмотров

принимать несколько типов для параметра в scala
У меня есть два объекта, ObjectA и ObjectB, оба с методом update (). Я хочу написать функцию, которая принимает ObjectA или ObjectB (но не другие типы). Концептуально это то, что я пытаюсь сделать: def doSomething[T <: ObjectA | T <:...
10216 просмотров
schedule 20.12.2022

Почему здесь не работает вывод типов?
Эта проблема возникла в модуле, который я пишу, но я сделал минимальный случай, который демонстрирует такое же поведение. class Minimal[T](x : T) { def doSomething = x } object Sugar { type S[T] = { def doSomething : T } def apply[T, X...
445 просмотров
schedule 11.11.2022

Получение java.lang.NoSuchMethodException в структурной типизации AnyVal
У меня есть следующий фрагмент, который (я думаю) определяет метод addNumber1(x:T):T для универсального типа T , который является подтипом AnyVal и имеет метод +(s:Int):T . def addNumber1[T <: AnyVal {def +(s:Int):T}](x:T):T = {x + 1}...
168 просмотров
schedule 06.01.2023

Связана ли потеря информации потока со структурным подтипом, присущим этому виду полиморфизма?
Структурное подтипирование в потоке может привести к потере информации: type O = {x: number, y: number}; type P = {x: number, y: number, z: number} function f(o: O) { return o.x * 2, o.y * 2, o; } const p: P = {x: 2, y: 3, z: 100}; const r =...
160 просмотров

Сопоставление структурных типов с образцом в Scala
Почему это печатает wtf? Сопоставление с образцом не работает со структурными типами? "hello" match { case s: { def doesNotExist(i: Int, x: List[_]): Double } => println("wtf?") case _ => println("okie dokie") }
4011 просмотров