Il est dommage de compenser les faiblesses d'un langage par son IDE.
Pourquoi dommage ? C'est le résultat qui compte, et avec un bon IDE, le typage devient un atout alors pourquoi s'en priver :)
Ref = new MaClasse() as MonInterface
C'est vrai que par rapport au C# ca change tout :
MonInterface Ref = new MaClasse(); Ce genre de détail de syntaxe semble dérisoire, mais si ça rend un code plus lisible et plus agréable, ça vaut le coup.
Désolé je trouves que MonInterface Ref est aussi lisible, voir plus ;)
De toute façon quand tu cherches à faire cela c'est pour "s'imposer" d'utiliser l'interface et non le véritable type. Imagine par exemple que tu es une classe A qui implémente 2 intefaces :
interface A{
string ToString();
}
interface B{
string ToString();
}
Ma classe est alors :
class C : A, B
{
public A.ToString(){return "je suis un A ! ";}
public B.ToString(){return "je suis un B ! ";}
}
Ce qui fait qu'à l'utilisation si j'ai une référence vers un A :
A var = new C();
je n'ai pas la même chose qu'avec :
B var = new C();
quand je fais :
var.ToString()
COmment tu fais dans un langage dynamique si tu ne peux pas préciser "en dur" le type de la référence ?
Comment l'IDE peut te proposer la bonne méthode ?
Je sais comment ils ont résolu le problème en Python : ils ont pas mis d'interface ;)
[^] # Re: Ruby On Rails
Posté par TImaniac (site web personnel) . En réponse à la dépêche Support d'Ajax dans Ruby on Rails. Évalué à 1.
Pourquoi dommage ? C'est le résultat qui compte, et avec un bon IDE, le typage devient un atout alors pourquoi s'en priver :)
Ref = new MaClasse() as MonInterface
C'est vrai que par rapport au C# ca change tout :
MonInterface Ref = new MaClasse();
Ce genre de détail de syntaxe semble dérisoire, mais si ça rend un code plus lisible et plus agréable, ça vaut le coup.
Désolé je trouves que MonInterface Ref est aussi lisible, voir plus ;)
De toute façon quand tu cherches à faire cela c'est pour "s'imposer" d'utiliser l'interface et non le véritable type. Imagine par exemple que tu es une classe A qui implémente 2 intefaces :
interface A{
string ToString();
}
interface B{
string ToString();
}
Ma classe est alors :
class C : A, B
{
public A.ToString(){return "je suis un A ! ";}
public B.ToString(){return "je suis un B ! ";}
}
Ce qui fait qu'à l'utilisation si j'ai une référence vers un A :
A var = new C();
je n'ai pas la même chose qu'avec :
B var = new C();
quand je fais :
var.ToString()
COmment tu fais dans un langage dynamique si tu ne peux pas préciser "en dur" le type de la référence ?
Comment l'IDE peut te proposer la bonne méthode ?
Je sais comment ils ont résolu le problème en Python : ils ont pas mis d'interface ;)