mboost-dp1

Sun
- Forside
- ⟨
- Forum
- ⟨
- Nyheder
#50
Det virker overordnet meget som en løsning der i Java findes fordi den har dårlig type inference.
f.eks. følgende
I C# kan vi skrive det således
Effiktivt set tillader begge sprog så et kald til shuffle(...) uden at explicit angive typen.
Så rent pratisk, er der ingen forskel, udover at det er mere komplekst i Java.
Det virker overordnet meget som en løsning der i Java findes fordi den har dårlig type inference.
f.eks. følgende
void shuffle(List<?> list) { ... }
I C# kan vi skrive det således
void Shuffle<T>(List<T> list) { ... }
Effiktivt set tillader begge sprog så et kald til shuffle(...) uden at explicit angive typen.
Så rent pratisk, er der ingen forskel, udover at det er mere komplekst i Java.
Windcape (1) skrev:Det var da godt nok en afskyelig syntaks. Hvorfor er det at JCP ikke bare har valgt at dublikere C#?
Det har de vel stort set også?
Så vidt jeg kan se er den eneste forskel de tokens der bruges til at markere hvad det er.
#(x,y)(x+y)
fremfor
(x,y) => x+y
onetreehell (4) skrev:
Collections.sort(data, #(String a, String b) { CountingSorter.this.count++; return a.length()-b.length(); });
});
Windcape (7) skrev:Din kode kan skrives så simpelt her i C#:
int count = 0;
var sorted = data.OrderBy(x => { count++; return x.Length; })
Suk.
Hvis du kiggede lidt på koden, så ville du opdage at forskellen skyldes at Collection.Sort og IEnumerable.OrderBy har et forskelligt API ikke p.g.a. forskellen i closures/lambda.
Du kunne godt lave IEnumerable.OrderBy API'et med det foreslåede Java closures.
Windcape (21) skrev:Dvs. du mener ikke Microsoft har gjort det fornuftigt i C#, eller mener du at det ikke er muligt i Java uden at omskrive hele deres implementing af Generics?
Han siger vist at han ikke tror at det kan implementeres i Java uden at reducere funktionaliteten af Java generics.
krainert (30) skrev:Vi kan vist hurtigt blive enige om, at den praktiske implementation af generics i Java er fejlbarlig, men arbejdsbyrden i fuldstændigt at omskrive JVM (eller hvad ellers måtte være nødvendigt for at opnå den ideelle understøttelse) er formentligt for stor til at vurderes ønskelig at gennemføre.
Ændringerne i JVM kunne man nu nok leve med.
Men man ville enten breake en masse eksisterende kode eller gøre det meget lidt brugt.
Windcape (51) skrev:#50
Det virker overordnet meget som en løsning der i Java findes fordi den har dårlig type inference.
f.eks. følgende
void shuffle(List<?> list) { ... }
I C# kan vi skrive det således
void Shuffle<T>(List<T> list) { ... }
Nej.
Den C# kode svarer til Java koden:
<T> void shuffle(ArrayList<T> list) { ... }
Opret dig som bruger i dag
Det er gratis, og du binder dig ikke til noget.
Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.