Hier ist, was ich bin in diesem Augenblick, dass derzeit Arbeiten zu tun, aber ich fühle mich ein bisschen in syntaktischer Zucker fehlt ...Können Blockparameter eines Array-Elements, das in einen Block für die inject-Methode übergeben wird, separat deklariert werden?
f = RGeo::Geos.factory
coords = [ [1,1], [2,2], [1,3] ]
points = coords.inject([]) {|points, coord| points << f.point(coord[0], coord[1]); points }
#=> [#<RGeo::Geos::CAPIPointImpl:0x3fff0950a508 "POINT (1.0 1.0)">, #<RGeo::Geos::CAPIPointImpl:0x3fff0950a47c "POINT (2.0 2.0)">, #<RGeo::Geos::CAPIPointImpl:0x3fff0950a454 "POINT (1.0 3.0)">]
Hier ist, was ich tun möchte:
points = coords.inject([]) {|points, x, y| points << f.point(x,y); points }
#=> [nil, nil, nil]
Im Moment gibt das ein Array von drei Nullwerten zurück. Ist es möglich, die Array-Werte eines Elements, das in den inject-Block übergeben wird, getrennt zu deklarieren, so wie es mit jeder Methode möglich ist?
Seitennotiz: Es ist sicher, denselben Variablennamen für den ersten inject-Block-Parameter (die Variable "result") und die Variable auf der linken Seite des Gleichheitszeichens zu verwenden, richtig? Ich denke ja, denn das wäre nur ein typischer Fall von Rekursion. Bitte kommentiere, wenn du etwas anderes fühlst oder weißt.
warum 'inject', es sieht aus wie 'map' würde tun? –
Ich nehme an, du hast Recht. Ich überlegte es mit Sicherheit. –