Swift 5.1. Рассмотрим следующий код. У меня нет проблемы , но мой код немного избыточен и это немного раздражает, поэтому мне интересно, есть ли способ сказать Swift выводить один из параметров c .
public class X0 {
}
public class X1: X0 {
}
public class C0<CONTAINED> {
public var value: CONTAINED
public init(_ value: CONTAINED) {
self.value = value
}
}
public class C1<T: X0>: C0<T> {
}
//public class CA<BOX: C0> { // ERROR Reference to generic type 'C0' requires arguments in <...>
public class CA<BOX: C0<T>, T> { // It's inconvenient that I have to give T as a parameter of the outer class; seems like it could be inferred
}
public func test() {
// let v: CA<C1<X1>> // ERROR Generic type 'CA' specialized with too few type parameters (got 1, but expected 2)
let v: CA<C1<X1>, X1> // This here is a little inconvenient to type, particularly when the class names are longer.
}
Кажется, что два X1
должны быть равны - я пробовал CA<C1<X0>,X1>
и CA<C1<X1>,X0>
на всякий случай, если есть какая-то логическая ошибка, которую я пропустил, но это дало мне ошибки для обоих поэтому я думаю, что оба должны быть точно равными, поэтому теоретически следует разрешить вывод, по крайней мере. Я попытался _
в нескольких местах и пропустил параметр, но он дал мне ошибки.