Описание тега f-bounded-polymorphism
Interfaces or classes having a type parameter which is a subtype of the interface itself, in any language; also known as the "curiously recurring template pattern". It helps defining chaining methods in a hierarchy of classes, or typed cloning methods.
0
ответов
Почему F-Bounded Type используется для добавления нового метода в существующую иерархию типов
Я читал следующую статью о решении проблемы выражения с использованием Java Generics. http://www.daimi.au.dk/~madst/ecoop04/main.pdf Автор предлагает первое решение с использованием F-ограниченных типов, чтобы гарантировать, что левый и правый парам…
20 сен '15 в 21:18
2
ответа
Проблема компиляции в Scala с F-ограниченными типами и экзистенциальными типами
Я использую F-ограниченный тип для того, чтобы иметь возможность вернуть текущий тип trait Board[T <: Board[T]] { def updated : T } И я пытаюсь написать универсальный вспомогательный метод, который использует его. Вопрос в следующем: почему следу…
31 мар '18 в 14:18
1
ответ
Границы параметров типа с объектами Spark получить сложно
Я новичок в Scala, Я пытаюсь создать объект, который принимает ProbabilisticClassifier в качестве входных данных, и это дает CrossValidator модель в качестве выхода: import org.apache.spark.ml.classification.{ProbabilisticClassifier, ProbabilisticCl…
31 мар '18 в 19:34
2
ответа
Разрешающие типы в F-ограниченном полиморфизме
У меня есть эти модели: trait Vehicle[T <: Vehicle[T]] { def update(): T } class Car extends Vehicle[Car] { def update() = new Car() } class Bus extends Vehicle[Bus] { def update() = new Bus() } Если я получу экземпляр Vehicle[Car] и вызвать upda…
24 фев '17 в 10:30
1
ответ
Почему scala не может определить тип для f-связанного полиморфизма?
Простой пример, иллюстрирующий проблему: trait WTF[W <: WTF[W]] { def get : Int } trait Zero extends WTF[Zero] { override def get : Int = 0 } case object Zero extends Zero final case class Box(inner : Int) extends WTF[Box] { override def get : In…
11 фев '17 в 20:44
2
ответа
Scala F-ограниченный полиморфизм на объекте
Я не могу написать следующий F-ограниченный полиморфизм в Scala. Зачем? trait X[T <: X[T]] object Y extends X[Y] Как я могу выразить это и заставить его скомпилировать?
25 авг '15 в 12:20
6
ответов
Практическое использование для "Любопытно повторяющегося шаблона"
Какие практические применения для " шаблонов любопытных повторений"? Обычно показанный пример " подсчитанного класса" не является убедительным примером для меня.
29 сен '08 в 15:54
1
ответ
Правильно ли расхождения с актерами Акки?
Я часто сталкиваюсь со следующей проблемой при использовании дженериков и актеров Akka: trait AuctionParticipantActor[P <: AuctionParticipant[P]] extends StackableActor { override def receive: Receive = { case message: Handled => participant =…
01 окт '17 в 05:52
3
ответа
Несоответствие типов Scala, когда универсальный тип работает с тем же универсальным типом
У меня есть универсальный класс case Route, который принимает список подклассов Location. Однако в следующем методе я получаю несоответствие типов при вызове distance expected: head.T, actual: T case class Route[T <: Location](route: List[T]) { d…
08 июн '18 в 09:44
2
ответа
Есть ли способ вернуть полиморфное это в Java?
В Typescript есть эта концепция полиморфного возвращаемого типа this, https://www.typescriptlang.org/docs/handbook/advanced-types.html Пример: export abstract class Animal { private name: string; public setName(name: string): this { this.name = name…
30 окт '18 в 17:02
1
ответ
Странная ошибка компиляции с существующими скалами с ограниченным полиморфизмом
Почему приведенный ниже код не компилируется? trait B[T <: B[T]] case class A[T <: B[T]](t: T) class C() extends B[C] val c: C = new C() val r2: A[_] = A(c) //compiles val r3: A[_] = A(c) //compiles fine val r4: A[_] = r3 //compiles fine val r…
05 май '17 в 14:21
1
ответ
Попытка моделировать F-ограниченный полиморфизм как член типа в Scala
Я хотел попробовать написать тип, методы которого могут быть однородными и возвращать значения одного типа: object SimpleTest { trait Foo extends Product with Serializable { type Self <: Foo def bar: Self } case class X() extends Foo { type Self …
05 май '14 в 21:13
1
ответ
Scala: ограничивающие черты, смешивающие f-ограниченные полиморфные черты
Я имею: trait Pet[T <: Pet[T]] { //disallows: Dog extends Pet[String] self: T => //disallows: Dog extends Pet[Monkey] def rename(s: String): T def name: String } Теперь черта как Feline что бы продлить Pet класс можно легко добавить следующим …
09 окт '17 в 11:01
1
ответ
Типы Скала и F ограниченные типы
Я изучаю F-связанные типы в Scala, и я столкнулся с ситуацией, когда я не знаю, в чем дело. Я сделал три теста, код выглядит следующим образом: import scala.collection.mutable def test1() = { trait Abstract { type ThisType <: Abstract def deepCop…
21 ноя '18 в 09:27
1
ответ
Почему компилятор scala говорит, что аргументы типа не соответствуют границам?
Я создал черту Combiner с подклассами Complex и IntCombiner, и моя цель - заставить Matrix работать как с Complex, так и с Int. Но по некоторым причинам это не компилируется, говоря, что [com.implicits.TestImplicits1.IntCombiner] do not conform to c…
12 янв '19 в 15:33
2
ответа
F-ограниченные типы и методы с параметрами типов на сайтах аргументов и возврата
У меня есть F-ограниченный тип, и моя цель - создать метод с параметризацией типа, чтобы иметь возможность использовать его повторно. Вот пример кода: trait FType { type ThisType <: FType def deepCopy(): ThisType } class ConcreteType extends FTyp…
26 ноя '18 в 12:18
0
ответов
Как вывести Fbound параметризованного типа?
У меня есть f-связанный тип и другие типы, которые зависят от него. Я пытаюсь объявить их так, чтобы не требовалось явно указывать fbound для операций. Подробности в примере object WhatIWant { sealed trait FBound[F <: FBound[F]] sealed trait Dep[…
22 фев '16 в 01:02
1
ответ
Переменная числа Scala параметров, которые являются подклассами F-ограниченного типа
В C++ я могу создать шаблон функции переменной следующим образом: #include <tuple> // helper to loop over tuple template <std::size_t I = 0, typename FuncT, typename... Args> void for_each(std::tuple<Args...>& tuple, FuncT func…
10 авг '18 в 14:22
1
ответ
Можно ли вернуть "это" в универсальном интерфейсе с реализацией по умолчанию, используя f-ограниченную квантификацию
public interface IEq<T> { public abstract Boolean testEqual(final T y); public default Boolean testNotEqual(final T y) { return !this.testEqual(y); } } public interface IOrd<T> extends IEq<T> { public abstract Boolean lessEqualThan…
26 май '18 в 10:35
1
ответ
Выражение ограниченного типа F как члена абстрактного типа
Я хочу преобразовать ограниченный F полиморфизм в члены абстрактного типа. trait FBoundedMovable[Self <: FBoundedMovable[Self]] { def moveTo(pos: Vect2): Self } в trait Movable { self => type Self <: (Movable { type Self = self.Self }) def …
02 фев '15 в 18:00