Описание тега generic-constraints
Общее ограничение будет ограничивать типы, которые могут использоваться для определенного универсального. Используйте этот тег для вопросов, касающихся общих ограничений.
2
ответа
TypeScript - может ли общее ограничение предоставлять "разрешенные" типы?
Учитывая следующий код... type Indexable<TKey, TValue> = { [index: TKey]: TValue } Это приводит к следующей ошибке: Тип параметра подписи индекса должен быть "строка" или "число". Есть ли способ ограничить TKey быть "строкой" или "числом"?
23 окт '17 в 09:01
2
ответа
Быстрое сопоставление с образцом
В приведенном ниже коде: protocol Serializable { } struct Owner: Serializable { var name: String } struct Car: Serializable { var owners: [Serializable] } let car = Car(owners: [Owner(name: "John"), Owner(name: "Mike")]) Mirror(reflecting: car).chil…
27 июл '16 в 20:43
1
ответ
Общее ограничение, чтобы ограничить коллекцию таким же типом производных объектов
Я хочу ограничить коллекцию, чтобы иметь только один и тот же тип класса, используя общий. public class InvoiceLine<T> where T : TransactionLine ,new() { private readonly IList<TransactionLine> _transactionLines = new List<Transaction…
17 мар '17 в 09:17
3
ответа
C# неограниченный универсальный тип как ограничение
Можно ли иметь общее ограничение, которое является неограниченным универсальным типом? Например: public T DoSomething<T>(T dictionary) where T : IDictionary<,> { ... } Редактировать: просто для объяснения контекста, я хочу ограничить исп…
01 авг '12 в 18:04
2
ответа
Почему универсальный метод интерфейса может быть реализован как неуниверсальный в Java?
Допустим, у нас есть несколько тестовых интерфейсов / классов, подобных этому: abstract class Plant { public abstract String getName(); } interface Eatable { } class Apple extends Plant implements Eatable { @Override public String getName() { return…
10 авг '16 в 02:49
0
ответов
Typescript - Generic Constraints - не принимает объектный литерал соответствующего типа
Используя машинопись 3, в угловых 7 рамок. Я пытаюсь подготовить свои локальные элементы массива Store для firebase, используя свойство Id объекта в качестве его ключа в обертывающем объекте, и наоборот, при извлечении из firestore. Я настроил интер…
20 фев '19 в 11:14
0
ответов
Возможная ошибка? Я могу создать общий экземпляр игнорируя ограничение
Работая над структурой, основанной на узлах, включая сериализацию и десериализацию, я наткнулся на случай, когда я могу создать экземпляр класса, игнорирующий ограничение типа. Почему я могу создать ZNumericProcessor<String> внутри ZSum хотя Z…
19 ноя '15 в 17:38
0
ответов
Наследование с помощью дженериков и перегрузка метода
У меня есть класс со следующим методом: public abstract class TypedMessage<T>{ public TypedMessage<T> setBody(byte[] body) { this.body = body; return this; } В подклассе TypedMessageЯ хочу перегрузить этот метод. Поэтому я делаю следующе…
18 май '17 в 15:28
1
ответ
Общее ограничение типа для интерфейса?
Я могу сделать это: void MyMethod<T>() where T : class { } Есть что-нибудь подобное? void MyMethod<T>() where T : interface { } Я бы предпочел не указывать имя интерфейса явно. Альтернативой является то, что я могу передать аргумент, кот…
20 янв '16 в 15:21
1
ответ
Почему мы не можем удовлетворить статические ограничения членов F# с помощью расширений типов?
Я хотел бы иметь возможность расширять типы из других библиотек статическими методами, чтобы включить общую арифметику. Взять, к примеру, недавно выпущенный SIMD-ориентированный фиксированный размер VectorN типы от Microsoft. Они определяют Zeroони …
17 авг '14 в 04:10
2
ответа
C# - Ограничения и ограничения типов, любой обходной путь для обеспечения безопасности типов?
У меня есть довольно распространенный сценарий об ограничениях Generic Type Constraint, который потребовал бы определения другого Generic. Это уже обсуждалось (сам Эрик Липперт и другие), но до сих пор я не видел общего руководства или, скажем, прак…
23 авг '15 в 10:42
2
ответа
Общий метод добавить новый T в список T
Я пытаюсь передать общий список в функцию, которая добавит новый элемент в список. У меня есть следующий урезанный пример: private void SetBayNumb<T>(ObservedList<T> bayList) where T : IBaySpec, new() { var bay = new T(); bayList.Add(bay…
05 фев '15 в 22:00
3
ответа
Можно ли ограничить параметр универсального типа тем, что принимает другой параметр универсального типа?
Например: class ClassA<TA> where TA: T1, T2, T3, T4 ... { } class ClassB<TB> where TB: whatever ClassA.TA accepts { ClassA<TB> MyA; } Я не хочу копировать ограничение ClassA в ClassB из-за принципов SSoT и DRY.
03 апр '14 в 14:22
3
ответа
Как ограничить вложенные универсальные типы универсального метода
Я пытаюсь создать метод, который возвращает данные из базы данных на основе указанного универсального типа. Интерфейс: (это определение компилируется) public interface IOrderPosition<TOrder, TArticle, TOrderPosition> where TOrder : IOrder wher…
24 ноя '16 в 15:29
4
ответа
Delphi XE: Могу ли я вызывать виртуальные конструкторы с параметрами из обобщенного типа с ограниченным классическим типом, не отказываясь от хаков?
Я пытаюсь построить общий предок для составных элементов управления. Первоначальная идея выглядела примерно так: type TCompositeControl<TControl1: TControl; TControl2: TControl> = class(TWinControl) private FControl1, FControl2: TControl; publ…
06 мар '12 в 15:27
7
ответов
Что именно представляет собой "Специальный класс"?
После неудачной попытки получить что-то вроде следующего для компиляции: public class Gen<T> where T : System.Array { } с ошибкой Ограничение не может быть специальным классом System.Array. Я начал задаваться вопросом, что же такое "особый кла…
30 апр '15 в 07:40
1
ответ
Почему Nullable<T> не совпадает как ссылочный тип для общих ограничений
Возможный дубликат: Обнуляемый тип как универсальный параметр возможно? Я столкнулся с очень странной вещью с общими ограничениями типов. У меня есть такой класс: public SomeClass<T> where T:class { } Тем не менее, я обнаружил, что не могу исп…
10 дек '12 в 03:20
0
ответов
Почему существует собственный родовой тип?
Я проверяю код, написанный некоторыми бывшими сотрудниками, и нашел это public abstract class BaseClass<T, M> where T : BaseClass<T, M>, M where M : IDisposable { protected M PropertyName {get; private set} ... // T is never used in this…
25 июл '18 в 09:20
1
ответ
Swift - Различия между наследованием протокола и ограничением Self на протокол
У меня есть протокол A: protocol A { } Каковы различия между реализацией протокола B как это: protocol B: A { } по сравнению с реализацией это так: protocol B where Self: A { } ? Что я могу сделать с одним, что я не могу сделать с другим? Где я стол…
07 сен '18 в 20:12
1
ответ
Невозможно назначить массив протоколов универсальному массиву
Ниже приведены некоторые коды, некоторые дают ошибку времени компиляции, некоторые нет. Есть ли ошибка или я что-то упускаю из-за дженериков здесь? 1) не работает: class DataSource: NSObject { var dataObjects: [DataType] init<T where T: DataType&…
19 апр '16 в 12:54