gpt4 book ai didi

ruby - 为什么在 Ruby 中捕获命名组会导致 "undefined local variable or method"错误?

转载 作者:数据小太阳 更新时间:2023-10-29 07:24:58 26 4
gpt4 key购买 nike

我在 Ruby 2.0 的正则表达式中遇到命名捕获问题。我有一个字符串变量和一个内插正则表达式:

str = "hello world"
re = /\w+/
/(?<greeting>#{re})/ =~ str
greeting

它引发了以下异常:

prova.rb:4:in <main>': undefined local variable or methodgreeting' for main:Object (NameError)
shell returned 1

但是,内插表达式在没有命名捕获的情况下也能工作。例如:

/(#{re})/ =~ str
$1
# => "hello"

最佳答案

命名捕获必须使用文字

您遇到了 Ruby 正则表达式库的一些限制。 Regexp#=~方法限制命名捕获如下:

  • 如果正则表达式不是文字,则不会发生赋值。
  • 正则表达式插值 #{} 也禁用分配。
  • 如果正则表达式放在右侧,则不会发生赋值。

您需要决定是要在正则表达式中命名捕获还是插值。您目前不能同时拥有两者。

关于ruby - 为什么在 Ruby 中捕获命名组会导致 "undefined local variable or method"错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15890729/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com