Ciò che è "Typing strutturale per Interfacce" a macchina

voti
17

Nel suo post sul blog su tipografico, Mark Rendle sta dicendo, che una delle cose che gli piacciono a questo proposito è:

Tipizzazione strutturale per le interfacce. Ho davvero voglia C # potrebbe farlo

Cosa voleva dire con ciò?

È pubblicato 04/10/2012 alle 06:08
fonte dall'utente
In altre lingue...                            


2 risposte

voti
18

Fondamentalmente, ciò significa che le interfacce sono confrontati in base "duck typing" piuttosto che su una base di tipo identità.

Si consideri il seguente codice C #:

interface X1 { string Name { get; } }
interface X2 { string Name { get; } }
// ... later
X1 a = null;
X2 b = a; // Compile error! X1 and X2 are not compatible

E il codice dattiloscritto equivalente:

interface X1 { name: string; }
interface X2 { name: string; }
var a: X1 = null;
var b: X2 = a; // OK: X1 and X2 have the same members, so they are compatible

Le specifiche non coprire questo in molti dettagli, ma le classi sono "marchi" che significa lo stesso codice, scritto con classi invece di interfacce, sarebbe avere un errore. C # interfacce hanno marchi, e quindi non possono essere implicitamente convertito.

Il modo più semplice per pensare a questo proposito è che se si sta cercando una conversione da interfaccia X per interfacciarsi Y, se X ha tutti i membri della Y, la conversione ha esito positivo, anche se X e Y non potrebbe avere gli stessi nomi.

Risposto il 04/10/2012 a 06:29
fonte dall'utente

voti
1

Pensa a.

class Employee { fire: = ..., otherMethod: = ...}
class Missile { fire: = ..., yetMoreMethod: = ...}
interface ICanFire { fire: = ...}
val e = new Employee
val m = new Missile
ICanFire bigGuy = if(util.Random.nextBoolean) e else m
bigGuy.fire

Che cosa succede se abbiamo detto:

interface IButtonEvent { fire: = ...}
interface IMouseButtonEvent { fire: = ...}
...

Dattiloscritto permetterà questo, C # non lo faranno.

Per quanto dattiloscritto mira a lavorare bene con il DOM che utilizza digitando “loose”, è l'unica ragionevole scegliere per dattiloscritto.

Lascio al lettore decidere se a loro piace “tipizzazione strutturale” ... ..

Risposto il 12/02/2014 a 16:40
fonte dall'utente

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more