Why call `delete`?
Only `@defaults[name] = defval` seems enough.