A volte una discussione tra due
veri programmatori può essere una discussione veramente terra a terra anche quando si parla di argomenti complessi, per esempio ieri ero in chat con un amico che per mantenere anonimo chiamerò Giammarchi A.
(anzi no, così mi sa che si capisce) dicevo, per farlo restare anonimo lo chiamerò Andrea G, è iniziato un discorso di cui vi posto un piccolo estratto (leggermente modificato) :
[... si parlava del linguaggio cobra ...]
me: ...anche in c# 3.0 hanno aggiunto l'inferenza :p
e si ottiene usando
var
var pippo =
new String(
"andr3a");
Andrea: lo so, me l'hanno rubata
questo in ESharp posso già farlo ma su C# 1,2 e non sul 3...
class var {} è l'abstract di Object,
che è la base di Array, String, Number, Function, etc
in ESharp ho già tutto
[..segue discussione semiseria su come sostituire la sua classe var con un altra che non diventi una parola chiave in futuro :D..]
me: inferred praticamente puoi creare una variabile senza esplicitarne il tipo
e il compilatore lo assegna alla prima volta in cui gli dai un valore
... tipo
var a=
"Fregna"; il compilatore dice
"Fregna" è
string dunque traduce in
string a =
"Fregna";
questo in fase di compilazione
[..segue discussione su come questo sia banale, ovvio scontato e già presente in n linguaggi con n tendente all infinito.. :geek:]
me: si, ma sai che vantaggio
ieri avevo un metodo che tornava stringhe
e elaborava l'array con un
foreach su
string[],
per esigenze mi son accorto che non andava bene,
ho cambiato il metodo ora torna un
ArrayList
e non ho modificato altro codice :d
Andrea: si ma se poi alla variabile fai usare metodi di altra classe ...
non va piu nulla
var a = "Fregna";
a.pow(2);
:LOL:
me: ma è ovvio! a quel punto devi usare un interfaccia
...ah beh! Però
C# ti viene in contro se proprio non vuoi modificare il codice...
si perchè hanno pure introdotto gli
extension method
ora puoi fare
in una classe publica e statica una cosa del genere volendo :
public static string pow(
this string s,
int i){
if(i>0){
var sb = new
System.Text.StringBuilder();
for(
int a=0;a<i;a++)
sb.Append(s);
return sb.toString();
}
return "";
}
In poche parole ho appena effettuato uno spaghetti code 2.0 :D :lol:
Andrea: si
mi piace C# perchè ti crei il tuo linguaggio per i fatti tuoi