Sembra che potrebbe essere keep_if
.Qual è il contrario di Array # reject in ruby?
Se sì, perché non si chiama keep
?
Sembra che potrebbe essere keep_if
.Qual è il contrario di Array # reject in ruby?
Se sì, perché non si chiama keep
?
reject
è select
(restituendo un nuovo array)reject!
è select!
(modificando l'array in posizione)keep_if
è delete_if
(modificando l'array in posizione)Penso che abbia a che fare con una semantica ben ponderata, e direi che è corretto. Diciamo che hai già un insieme di cose, "t1, t2 e t3"; se rifiuti un sottoinsieme, dici "Rifiuta t1 e t2". Non parli di T3, perché non è influenzato dalla tua azione (il tuo rifiuto): il default è "keep". Ma se stai esprimendo ciò che intendi mantenere e dici solo "tengo t1 e t2", lo stato di t3 viene messo in dubbio: dopo tutto, hai già t1 e t2, quindi qual è il punto di dirti? tenendoli (sono già nello stato di default, "mantieni"), specialmente visto che stai mantenendo implicitamente anche il T3. Usando la sintassi "keep_if", stai indicando esplicitamente che esiste una condizione (semplice o composta) che determinerà ciò che deve essere conservato e ciò che deve essere scartato.
Guardando http://www.ruby-doc.org/core-1.9.3/Array.html, sembra abbastanza chiaro che 'keep_if' è effettivamente l'opposto (stessa logica ma ribalta il confronto da' true' a 'falso'). Questa è una domanda sul nome del metodo? – bdares
@bdares 'keep_if' non ha la stessa logica di' reject'. Potrebbe avere la stessa logica di 'reject!', Però. –