Re:Swift – observations from Rust’s original designer
by twic on Tuesday June 03, 2014 @01:11PM
(#7841432)
I pretty much only know Java and shell script. Could someone perhaps explain what this "double duty" is? A small example would be really helpful.
[ Parent
| on HN ]
Re:Swift – observations from Rust’s original designer
by CmonDev on Wednesday June 04, 2014 @03:49AM
(#7844449)
// protocol = interface
interface ISample { void Process(); }
ISample sample = new ConcreteSample(); // Duty #1
class GenericSampleProcessor<T> : where T : ISample // Duty #2
{ public void Process(T sample) { sample.Process(); } }
Re:Swift – observations from Rust’s original designer
by twic on Wednesday June 04, 2014 @08:20AM
(#7845118)
Ah, i see, thanks.
It's the same in Java:
ISample sample = new ConcreteSample(); // Duty #1
class GenericSampleProcessor<T extends ISample> // Duty #2
Java got generics in 1.5, released September 2004, and bounded types like this were in that release. C# got generics in 2.0, released in November 2005, and i imagine it had them too. I assume Java lifted this idea from elsewhere. I am really quite surprised that Mr Hoare thinks this is a novel discovery in Rust.