Описание тега structural-typing
Structural typing is the ability of a type system to identify a type based on what data it contains, rather than how a type is named.
1
ответ
Использование структурных типов Scala с абстрактными типами
Я пытаюсь определить структурный тип, определяющий любую коллекцию, которая имеет метод "добавить" (например, коллекция Java). Используя это, я хочу определить несколько функций более высокого порядка, которые работают с определенной коллекцией obje…
28 апр '10 в 01:57
1
ответ
Коллекция структурных параметров типа странности
Это кажется простой вещью, но я не могу этого понять... Это компилирует: object CanFoo1 { def foo(): Unit = { println("Yup, I can foo alright") } } object CanFoo2 { def foo(): Unit = { println("And I can foo with the best") } } trait A { type CanFoo…
11 авг '16 в 12:56
2
ответа
Параметры структурного типа в коллекциях Scala
Отказ от ответственности: это вопрос того, что возможно, а не того, что было бы рекомендовано на практике. Допустим, вы получили следующие классы: case class point1(x: Int, y:Int) case class point2(x: Int, y:Int) case class point3(x: Int, y:Int) и у…
13 мар '13 в 17:01
2
ответа
Почему эта структурная граница не работает должным образом?
Я пытаюсь написать простой вспомогательный метод, который получает что-то, что может быть закрыто, и некоторую функцию, которая получает первый и гарантирует, что "closeable" закрывается после выполнения функции. Например, я хочу использовать это та…
24 янв '11 в 21:37
1
ответ
Можно ли принять произвольный экстрактор в качестве аргумента метода
Я хотел бы повторно использовать существующие экстракторы и составить их. A => Option[B] идеально сочетается с B => Option[C], Но я запутался, как я мог выразить такое отношение в коде. Очевидный способ не доступен по уважительной причине: typ…
30 дек '16 в 07:36
2
ответа
Почему Scala использует отражение для вызова метода структурного типа?
Если функция принимает структурный тип, она может быть определена как: def doTheThings(duck: { def walk; def quack }) { duck.quack } или же type DuckType = { def walk; def quack } def doTheThings(duck: DuckType) { duck.quack } Затем вы можете исполь…
16 дек '11 в 19:55
1
ответ
Почему этот статически типизированный членский доступ считает это геттером?
rvm это объект, а не функция. Почему ограничение (^b:(member ReportSubTitle:(String -> unit)) rvm ) придумать как получатель вместо установщика? Это всплывающая подсказка или что-то еще? Везде, где я использовал дженерики со статической типизаци…
03 авг '15 в 17:21
2
ответа
Структурный тип Scala как параметр типа функции
Я хочу создать некоторую функцию "общего сумматора", которая будет работать для всех типов, которые поддерживают операцию "+". Я пробовал структурную типизацию как параметр типа функции, но это не компиляция: def f[T <: { def +(x: T): T} ](a: T, …
01 июн '14 в 08:41
2
ответа
Забавное наблюдение о (рекурсивных) структурных типах в Scala
Мне нужен был некоторый рекурсивный структурный тип в некотором куске кода, использующий черты и структурный тип в качестве ограничения параметра типа. Это работало нормально, но позже я узнал, что Scala не поддерживает рекурсивные структурные типы.…
04 сен '10 в 19:29
2
ответа
Почему вывод типа не работает здесь?
Эта проблема возникла в модуле, который я пишу, но я сделал минимальный случай, который демонстрирует такое же поведение. class Minimal[T](x : T) { def doSomething = x } object Sugar { type S[T] = { def doSomething : T } def apply[T, X <: S[T]] (…
27 апр '12 в 00:34
1
ответ
Структурная типизация для Traversable
У меня есть этот метод: scala> def foo(traversable: Traversable[{def toByte: Byte}]) = { | traversable.map(_.toByte) | } foo: (traversable: Traversable[AnyRef{def toByte: Byte}])Traversable[Byte] Но когда я называю это так: scala> foo(List(1,2…
26 мар '12 в 04:05
2
ответа
Образцы, соответствующие структурным типам в Scala
Почему это печать WTF? Сопоставление с образцом не работает на структурных типах? "hello" match { case s: { def doesNotExist(i: Int, x: List[_]): Double } => println("wtf?") case _ => println("okie dokie") }
01 янв '10 в 08:26
1
ответ
Структурное отражение подтипа
Можем ли мы получить тип val s: String используя отражение снаружи функции f? val f = (r: {val s: String}) => { }
01 ноя '12 в 21:01
1
ответ
Структурный подтип потока "забывает" определенные свойства подтипа?
В настоящее время я изучаю структурное типирование. Я скептически отношусь к идее, что два типа считаются эквивалентными только потому, что они имеют общую часть своей структуры. Это похоже на статическую типизацию утки и полностью игнорирует семант…
13 сен '17 в 20:26
4
ответа
Дополнительная возможность структурной типизации в C++ или любом другом языке?
В C++, как сказать компилятору, что Ogre::Vector3 IS_SAME_AS SomeOtherLIB::Vector3? Я чувствую это... в таких языках, как с ++, которые не являются структурно типизированными, но в некоторых случаях это имеет смысл. Обычно в качестве разработчика иг…
01 июн '10 в 21:47
1
ответ
Класс с типизированным шрифтом только для чтения не конфликтует с обычным классом машинописного текста, если структура такая же
Я знаю, что машинопись имеет структурный механизм печатания. Я ожидаю, однако, что если у вас есть такой класс: class Country { id: string; name: string; } и один определяется так: class ReadonlyCountry { readonly id: string; readonly name: string; …
09 янв '17 в 13:20
4
ответа
Clojure Protocols против Scala Структурные Типы
После просмотра интервью с Ричем Хикки о протоколах в Clojure 1.2 и очень мало зная о Clojure, у меня есть несколько вопросов о протоколах Clojure: Они предназначены для того же, что и структурные типы в Scala? Какие преимущества имеют протоколы по …
22 дек '10 в 10:16
1
ответ
Применить метод, используемый в типе [Scala]
Я просматривал Scala-код и обнаружил, что метод apply также используется в type,Пример: type Common = { def apply: {val func: {} => {val a: A}; val c: C} => {val b: B} } Что означает приведенный выше код? Как я понимаю, это означает, что Commo…
14 апр '17 в 11:30
1
ответ
Обобщенное соответствие структурного типа в Scala
Меня интересует проблема соответствия определенного типа более общему структурному типу. Рассмотрим следующие примеры: trait Sup trait Sub extends Sup type General = { def contra(o: Sub): Unit def co(): Sup def defaults(age: Int): Unit def defaults2…
12 авг '10 в 20:21
1
ответ
Тест на совместимость типов
Поддерживает ли Typescript прямой тест на совместимость структурных типов? C# поддерживает is Оператор и типы поверхности IsAssignableFrom(object instance) if (foo is SomeType) ... if (SomeType.IsAssignableFrom(foo)) ... Есть ли какой-нибудь прямой …
17 май '16 в 04:09