Non sembra corrispondere alle chiavi o ai valori. Fa qualcosa che non sto discernendo?Qual è il significato di grep su un hash?
7
A
risposta
11
grep
è definito in Enumerable
, vale a dire è un metodo generico che non sa nulla di Hash
es. Funziona su qualunque siano gli elementi dello Enumerable
. Ruby non ha un tipo per coppie chiave-valore, rappresenta semplicemente le voci Hash
come matrici a due elementi in cui il primo elemento è la chiave e il secondo elemento è il valore.
grep
utilizza il metodo ===
per filtrare gli elementi. E dal momento che né
/a/ === ['a', 'b']
né
/b/ === ['a', 'b']
sono vere, si ottiene sempre un array vuoto come risposta.
Prova questo:
def (t = Object.new).===(other)
true
end
{'a' => 'b'}.grep t
# => [['a', 'b']]
Qui si può vedere come grep
opere con Hash
es.
Problemi correlati
- 1. Qual è il significato di ∃?
- 2. Qual è il significato dell'operatore &?
- 3. Qual è il significato dell'operatore || =
- 4. Qual è il significato di -532459699?
- 5. In Ruby qual è il significato di due punti dopo l'identificatore in un hash?
- 6. Qual è il significato SQL di 0x5E5B7D7E?
- 7. Qual è il significato di "lista nera" su GStreamer?
- 8. Qual è il significato di "Locality Level" su Spark cluster
- 9. Qual è il significato di main_syntax
- 10. Qual è il significato di "Unità eroe"?
- 11. Qual è il significato di questo typedef?
- 12. Qual è il significato di questa sintassi?
- 13. Qual è il significato di id?
- 14. Qual è il significato di System.CLSCompliantAttribute?
- 15. Qual è il significato di "==" in C?
- 16. Qual è il significato di <#= #>
- 17. qual è il significato di "this.this $ 0"?
- 18. Qual è il significato di CTOR?
- 19. Qual è il significato di svg: svg?
- 20. Qual è il significato di "_" in python?
- 21. Qual è il significato di 'sourceSets.all *'
- 22. Qual è il significato di! #: 3?
- 23. Qual è il significato di [...] in python?
- 24. Qual è il significato di [...] regex?
- 25. Qual è il significato di @_ in Perl?
- 26. Qual è il significato del nome di fork() in Linux
- 27. qual è il significato di "statico" nell'intestazione di un metodo?
- 28. Qual è il significato di $ in un nome di variabile?
- 29. Qual è il significato di ciascun valore di hash in ObjectSpace.count_objects?
- 30. Qual è il significato dei file dylib?
Grazie, vedo che === è definito per Object, ma non sovrascritto per Hash, quindi non è davvero significativo. Ma almeno ora vedo che: {'a' => 'b'}. Grep Array ... => [["a", "b"]] – user258980
@ user258980: Il fatto che 'Hash # === 'non è definito è completamente irrilevante, dal momento che non stai chiamando' Hash # === ', stai chiamando' Hash # grep'. 'Hash # grep' chiama quindi il metodo' === 'di qualunque oggetto vi sia passato. Nel tuo esempio, quell'oggetto è '/ a /', quindi 'Hash # grep' finisce per chiamare' Regexp # === 'passando ogni elemento a turno. Poiché questi elementi sono matrici a due elementi e un 'Regexp' ovviamente non può mai corrispondere a un array, solo stringhe, il risultato sarà sempre vuoto. –
Grazie per il chiarimento. – user258980