可能重复:
Using Named Captures with regex match in Ruby’s case…when?
我正在尝试更频繁地使用命名组(提供名称的捕获组),以使我的代码更具可读性。
我正在尝试找出如何为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
有没有办法从案例陈述中做一个命名组?
我可以找到最相似的问题:How to write a Ruby switch statement (case...when) with regex and backreferences?,但接受的答案仅涉及将$1
用于$9
。