You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ruby Hash模式匹配疑问:含额外键的哈希为何匹配成功?

Ruby模式匹配中Hash部分匹配的问题解析

你的代码里第二个分支in {name: x, age:y}能匹配成功,核心原因是Ruby的Hash模式匹配默认遵循部分匹配规则:只要目标Hash包含模式中指定的所有键,不管它还有没有其他额外键,都会判定匹配成功。

你的目标Hash{ name: 1, age: 21, location: "NYC" }包含name和age两个键,完全满足第二个分支的模式要求,所以会执行该分支的输出逻辑。而第一个分支因为name的值是整数,不满足String => x的类型约束,所以被直接跳过。

如果想要实现严格匹配(要求目标Hash的键和模式完全一致,不能有额外键),可以在模式末尾加上**nil,修改后的第二个分支如下:

in {name: x, age:y, **nil}

此时只有当目标Hash仅包含name和age两个键时才会匹配,你的代码就会走到else分支输出"Invalid pattern"。


内容的提问来源于stack exchange,提问作者Regal Life

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 04:30:56