在case语句中使用正则表达式命名组

时间:2013-01-10 01:36:38

标签: ruby regex switch-statement

  

可能重复:
  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

0 个答案:

没有答案