2017-12-28 48 views
1

ich die folgende Klassendefinition in Swift haben:Vererben mehrere Klassen in F #

class LandlordHome : UIViewController, UICollectionViewDelegate, UICollectionViewDataSource { 

} 

Ich versuche es in F # zu erstellen, aber das Vererbungsmuster nur in F # ermöglicht es mir, eine Klasse wie folgt zu erben:

[<Register ("LandlordHome")>] 
type LandlordHome (handle:IntPtr) = 
inherit UIViewController (handle) 

Wenn ich versuche, wie diese zusätzliche Klassen hinzufügen:

[<Register ("LandlordHome")>] 
type LandlordHome (handle:IntPtr) = 
inherit UIViewController, UICollectionViewDelegate, UICollectionViewDataSource (handle) 

dies ein wirft Error.

+3

ich keine Erfahrung haben mit F #. Beachten Sie jedoch, dass LandlordHome von der * einzigen Klasse * UIViewController erbt und zusätzlichen * Protokollen entspricht. * –

Antwort

5

UICollectionViewDelegate und UICollectionViewDataSource sind nicht class es, aber s, die wie interface s sind in F#

So könnte Ihr sollte so etwas wie dieses (abstrakten Code) aussehen:

[<Register ("LandlordHome")>] 
type LandlordHome (handle:IntPtr) = 
    inherit UIViewController (handle) 
    interface UICollectionViewDelegate with 
     // implementation of UICollectionViewDelegate 
    interface UICollectionViewDataSource with 
     // implementation of UICollectionViewDataSource 
0

.NET unterstützt keine mehrfache Klassenvererbung. Und es bedeutet F #, C#, VB.NET und verwaltet C++ (nicht 100% sicher) unterstützen es auch nicht, leider. Aber die Implementierung mehrerer Schnittstellen ist erlaubt.

+4

Swift unterstützt auch keine Mehrfachvererbung. Der obige Code enthält keine Mehrfachvererbung. – user28434

+0

Ich bin kein Swift-Experte. Deshalb gibt es den Satz über Schnittstellen. –