Valores predeterminados y combinación
fetch, merge, dig
Valores predeterminados y combinación es una lección gratuita de Ruby Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Ruby Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Ruby Academy incluye 4 lecciones en total.
El problema de nil
Leer una clave inexistente devuelve nil, lo que puede causar sorpresas en operaciones matemáticas o lógicas. Ruby ofrece formas más seguras de gestionar la ausencia de valores.
h = { a: 1 }
puts h[:b].inspectfetch para un acceso seguro
fetch devuelve el valor o produce un error claro si falta la clave. Úselo cuando la clave sea obligatoria.
h = { name: "Ada" }
puts h.fetch(:name)fetch con un valor predeterminado
Proporcione a fetch un segundo argumento como alternativa, que se usará únicamente cuando falte la clave.
h = { name: "Ada" }
puts h.fetch(:age, 0)
puts h.fetch(:name, "Unknown")fetch con un bloque
Pase un bloque para calcular la alternativa de forma diferida. El bloque se ejecuta solo cuando no se encuentra la clave.
h = {}
puts h.fetch(:x) { "computed default" }Hash con un valor predeterminado
Hash.new(default) devuelve el valor predeterminado para cualquier clave inexistente en lugar de nil. El valor predeterminado se comparte, por lo que es preferible usar esta forma con valores inmutables sencillos.
counts = Hash.new(0)
counts[:a] += 1
counts[:a] += 1
puts counts[:a]
puts counts[:b]Valor predeterminado con un bloque
Hash.new { |hash, key| ... } calcula un valor predeterminado nuevo para cada clave, lo que resulta ideal para agrupar elementos en matrices.
groups = Hash.new { |h, k| h[k] = [] }
groups[:fruit] << "apple"
groups[:fruit] << "pear"
puts groups[:fruit].inspectContar con valores predeterminados
Un valor predeterminado de 0 hace que contar palabras sea sencillo y claro.
words = ["a", "b", "a", "a"]
count = Hash.new(0)
words.each { |w| count[w] += 1 }
puts countCombinar hashes
merge combina dos hashes en uno nuevo. En caso de conflicto, prevalecen las claves del segundo hash.
defaults = { color: "red", size: "M" }
user = { color: "blue" }
puts defaults.merge(user)Combinar con un bloque
Pase un bloque a merge para resolver conflictos, por ejemplo, sumando los valores.
a = { x: 1, y: 2 }
b = { y: 3, z: 4 }
puts a.merge(b) { |key, old, new| old + new }Acceso seguro a hashes anidados con dig
dig lee hashes anidados de forma segura y devuelve nil si falta cualquier nivel, en lugar de producir un error.
data = { user: { address: { city: "London" } } }
puts data.dig(:user, :address, :city)
puts data.dig(:user, :phone, :home).inspectCombinar las herramientas
Use valores predeterminados y merge conjuntamente para crear una configuración a partir de valores base y sobrescrituras.
base = { retries: 3, timeout: 30 }
options = base.merge(timeout: 60)
puts options.fetch(:timeout)Comprobación rápida
Compruebe sus conocimientos sobre valores predeterminados y combinación de hashes.
Resumen
Ahora puede gestionar los datos faltantes correctamente:
fetchcon un valor predeterminado, un bloque o un error estrictoHash.new(0)y valores predeterminados mediante bloques para contar y agruparmergecon bloques para resolver conflictosdigpara acceder de forma segura a datos anidados
Siguiente curso: rangos y Enumerable.
c = Hash.new(0)
c[:hits] += 1
puts c[:hits]Preguntas frecuentes
¿La lección «Valores predeterminados y combinación» es gratis?
Sí — el texto completo de «Valores predeterminados y combinación» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Ruby Academy, actualiza a CoddyKit PRO. El curso de Ruby Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Valores predeterminados y combinación»?
fetch, merge, dig Practicas Ruby Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Ruby Academy?
No se requiere experiencia previa. Ruby Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.
¿Cuánto tiempo toma la lección «Valores predeterminados y combinación»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Ruby Academy?
Sí. Cada lección de Ruby Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Symbols frente a strings
- Creación y lectura de hashes
- Iteración de hashes
- Valores predeterminados y combinación