I can make instance method for dedicated generic constrained method like below
// this is just an example
extension Array {
func getArrayFirst<T>() -> T? where Element == Array<T> {
first?.first
}
}
but how can I define getter like this?
// Error: Same-type constraint 'Element' == 'Array<Element.Element>' is recursive
extension Array where Element == Array<Element.Element> {
var arrayFirst: Element.Element? {
return first?.first
}
}
// Cannot build rewrite system for generic signature; concrete nesting limit exceeded
//Failed rewrite rule is τ_0_0.[concrete: Array<Array<Array<Array<Array<Array<Array<Array<Array<Array<Array<Array<Array<Array<Array<Array<Array<Array<Array<Array<Array<Array<Array<Array<Array<Array<Array<Array<Array<Array<Array<Array<τ_0_0>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] => τ_0_0
extension Array where Element == Array {
var arrayFirst: Element.Element? {
return first?.first
}
}
extension Array {
// Error: Cannot find type 'T' in scope
var myFirst: T? where Element == Array<T> {
first?.first
}
}
extension Array {
//Error: 'Element' is not a member type of type 'Element'
var myFirst: Element.Element? where Element == Array<T> {
first?.first
}
}
Any help is appreciated.