2

可能的重复:
在 Ruby 的情况下使用带有正则表达式匹配的命名捕获......什么时候?

我正在尝试更频繁地使用命名组(捕获具有提供名称的组),以使我的代码更具可读性。

我正在尝试找出如何为case声明做到这一点:

date_field = "Wk 9"
date = case date_field
when /^Wk (?<weeks>\d+)$/ then 7 * Integer(weeks)
else raise "Unexpected date_field #{date_field.inspect}"
end

给我

NameError: undefined local variable or method `weeks' for main:Object

不像

date_field = "Wk 9"
/^Wk (?<weeks>\d+)$/ =~ date_field
date = 7 * Integer(weeks)
date # => 63

有没有办法从案例陈述中做一个命名组?

我能找到的最相似的问题:如何使用正则表达式和反向引用编写 Ruby switch 语句(case...when)?,但接受的答案只谈论使用$1to $9

4

0 回答 0