我正在尝试更频繁地使用命名组(捕获具有提供名称的组),以使我的代码更具可读性。
我正在尝试找出如何为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)?,但接受的答案只谈论使用$1
to $9
。