Dies ist möglich, in Ihren Hash mit Procs zu kodieren.
Sie können dies ein wenig verallgemeinern, wenn Sie einen Hash generieren möchten, der jedes Array ändern kann.
def remap_arr(arr, idx)
(idx...arr.length+idx).zip(arr.map.with_index{|_,i| -> (val) {arr[i] = val}}).to_h
end
arr = [1,2,3,4,5,6]
positions = remap_arr(arr, 1)
positions[2].('hello')
# arr => [1,'hello',3,4,5,6]
positions[6].('goodbye')
# arr => [1,'hello',3,4,5,'goodbye']
Aber ich bin der Hoffnung, dieses Experiment nur ein Gedanke ist, gibt es keinen Grund, die Art und Weise Array-Indizierung Verhalten zu ändern arbeitet von 1 zu starten, anstatt 0. In solchen Fällen würde man normalerweise wollen nur Offset Der Index muss mit der richtigen Array-Indizierung übereinstimmen (beginnend bei Null). Wenn das nicht ausreicht, ist es ein Zeichen, dass Sie eine andere Datenstruktur benötigen.
Was genau möchten Sie erreichen? –
@ MarkoAvlijaš ist im Titel. Ich möchte ein Array über einen Hash ändern. Aber wenn ich es mache, ist derjenige, der sich ändert, der Hash selbst, nicht das Array – chaosfirebit
@chaosfirebit und warum willst du das tun? – Stefan