Sto lavorando con una serie di piazzole midi, che assomiglia a questo ...Rubino array - come posso fare valori persistono nel nulla Valori
pitches = [
60, nil, nil, nil, 67, nil, nil, nil,
nil, nil, nil, nil, nil, nil, nil, nil,
nil, nil, nil, nil, nil, nil, nil, nil,
nil, nil, nil, nil, nil, nil, nil, nil
]
In questo caso, il passo è ancora 60 su indici 1, 2 e 3.
seguente indice 4, il passo è ancora 67.
Come posso scrivere un metodo per identificare il valore non-nil precedente?
L'unico modo che posso pensare di fare al momento sembra un po 'goffo:
def pitch_at_step(pitches,step)
if pitches.any?
x = pitches[step]
until x != nil
index -= 1
x = pitches[step]
end
x
else
nil
end
end
Il risultato atteso è nel formato:
pitch_at_step(pitches, 0) # 60
pitch_at_step(pitches, 2) # 60
pitch_at_step(pitches, 4) # 67
pitch_at_step(pitches, 8) # 67
È questa la soluzione migliore? c'è un modo più ordinato e/o più efficiente?
si può dare anche l'uscita? In modo che non abbiamo bisogno di eseguire il codice. –
Dovrebbe essere il valore non più recente, quindi 0: 60, 1: 60, 2: 60, 3: 60, 4: 67, 5: 67, 6: 67, ecc. – AJFaraday