On 12.12.2010 20:44, foobar wrote:
Adam D. Ruppe Wrote:

foobar wrote:
D basically re-writes foreach with opApply into the ruby version
which is why Ruby is *BETTER*

You missed the point: there is no "Ruby version". They are the
same thing.

By "ruby version" I meant the syntax. I agreed already that they are 
implemented the same.

foreach to me is a redundant obfuscation

How can it be redundant? It's got the same elements the same
number of times.

incorrect. The difference is that D adds "special" syntax for this whereas it's just a 
plain method in Ruby. By calling opApply directly you get the direct "ruby version" 
without the redundant use of a keyword + compiler transformation.


rofl.copter.each |lol|
     spam
end


foreach(lol; rofl.copter)
     spam


Same elements, just reordered.


I don't know about the each() method itself. I've never written
one, but I suspect it is virtually identical to opApply too.

opApply *is* the same thing as Ruby's each method.



Just for the sake of correctness: Ruby too has a for-like loop that gets rewritten to the block/delegate version.

        for lol in rofl.copter
                spam
        end

This gets rewritten to

        rofl.copter.each do |lol|
                spam
        end

As far as I know this is a construct for ease transition from C to Ruby but is not used very much. Blocks are used very often in Ruby so using a for-loop is kind of inconsistent style.

Happy programming
Stephan Soller

Reply via email to