generics - poo - listas genericas c#
¿Cómo implemento un operador para una clase anidada en una estructura genérica? (2)
Anidar una class
o struct
en una estructura de tipo genérico ahora está marcado como no válido por XCode6 Beta6
Cuando anido una clase dentro de una estructura genérica y trato de implementar el operador de igualdad, como esto:
struct Outer<T> {
class Inner : Equatable {}
}
@infix func == <T>(lhs: Outer<T>.Inner, rhs: Outer<T>.Inner) -> Bool {
return lhs === rhs
}
Recibo el siguiente error cuando intento ejecutar el proyecto:
While emitting IR SIL function @_TFCC4Test5Outer5InnerCU__fMS1_FT_S1_ for ''init'' at .../Testing.swift:20:11
<unknown>:0: error: unable to execute command: Segmentation fault: 11
<unknown>:0: error: swift frontend command failed due to signal (use -v to see invocation)
Command /Applications/Xcode6-Beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift failed with exit code 254
Sin embargo, funciona bien cuando hago lo mismo sin anidar la clase:
class MyClass : Equatable {}
@infix func == (lhs: MyClass, rhs: MyClass) -> Bool {
return lhs === rhs
}
¿Es esto un error con el compilador, o estoy haciendo algo mal?
Podría definir la clase interna en un archivo o espacio separado, definiendo su operador y luego hacer una var de ese tipo en su clase interna:
class Inner: Equatable {}
func == (left: Inner, right: Inner) -> Bool {
return true
}
struct Outer {
var myVar: Inner
}
A partir de beta 6