2014-06-09 32 views
18

Ben yuva genel yapı içinde bir sınıf ve bunun gibi, eşitlik operatörü uygulamaya çalıştığınızda:Genel bir yapıda iç içe geçmiş bir sınıf için nasıl bir operatör uygularım?

struct Outer<T> { 
    class Inner : Equatable {} 
} 

@infix func == <T>(lhs: Outer<T>.Inner, rhs: Outer<T>.Inner) -> Bool { 
    return lhs === rhs 
} 

Ben projeyi çalıştırmayı denediğinizde aşağıdaki hatayı alıyorum: Ancak

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 

class MyClass : Equatable {} 

@infix func == (lhs: MyClass, rhs: MyClass) -> Bool { 
    return lhs === rhs 
} 

bu derleyici ile bir hata mı, yoksa yanlış bir şey yapıyorum: Ben sınıf yuvalama olmadan aynı şeyi yaptığında iyi çalışır?

+8

Bu bir hata olduğunu derleyici, rapor etmelisin. –

+0

Evet şu anda Sınıf değişkenleri desteklenmiyor ... buradaki neden bu olabilir – Jack

+4

Burada kullanılan sınıf değişkenleri yok ve her ikisi de yapıdaysa aynı şey gerçekleşiyor. – Jay

cevap

4

bir genel tür yapı içinde bir class veya struct şimdi

enter image description here

+0

Mantığın ne olduğu hakkında bir fikir var mı, yoksa derleyici bir hata mı? – Tylerc230

+1

Xcode 6.1.1'den itibaren hala geçersiz olarak işaretlendi. Hızlı bir dil özelliği olduğunu söyleyebilirim. Muhtemelen Apple Swift forumunda arkasındaki mantık için sormak zorundasınız. Derleyici bir hata olarak kabul edilmez (derleyici bir hata, hızlı ekip POV'undan, XCode'un çökmesine neden olan şeydir) –

1

Bunu operatör daha sonra yapmak tanımlayan ayrı bir dosya veya uzayda İç sınıfını tanımlayabiliriz XCode6 beta6 tarafından geçersiz olarak işaretlenir yuvalama içinizdeki sınıfta bu tür var: beta itibarıyla

class Inner: Equatable {} 
func == (left: Inner, right: Inner) -> Bool { 
    return true 
} 
struct Outer { 
    var myVar: Inner 
}