Qu'est-ce que « frappe structurelle pour les interfaces » dactylographiée

voix
17

Dans son blog à propos tapuscrit, Mark Rendle dit que l' une des choses qu'il aime à ce sujet est:

« Frappe structurelle pour les interfaces. Je souhaite vraiment que C # pourrait faire »

Que voulait-il dire par là?

Créé 04/10/2012 à 06:08
source utilisateur
Dans d'autres langues...                            


2 réponses

voix
18

En gros, cela signifie que les interfaces sont comparés sur une base « canard de frappe » plutôt que sur une base d'identité de type.

Considérons le code 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

Et l'équivalent code tapuscrit:

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

La spécification ne couvre pas dans les détails, mais les classes ont des « marques » qui signifie le même code, écrit avec des classes au lieu d'interfaces, aurait une marge d'erreur. C # interfaces ont des marques, et ne peuvent donc pas être converti implicitement.

La façon la plus simple d'y penser est que si vous essayez une conversion de l'interface X à l'interface Y, si X a tous les membres de Y, la conversion réussit, même si X et Y pourraient ne pas avoir les mêmes noms.

Créé 04/10/2012 à 06:29
source utilisateur

voix
1

Penser à.

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

Et si on dit:

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

Tapuscrit permettra cela, C # ne sera pas.

Comme tapuscrit vise à bien travailler avec le DOM qui utilise en tapant « lâche », il est la seule raisonnable pour choisir tapuscrit.

Je laisse au lecteur de décider s'ils aiment « taper structure » ... ..

Créé 12/02/2014 à 16:40
source utilisateur

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