Ruby的%q和%Q引用方法的用例是什么?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (19)

我从其他Ruby语言参考中知道。

%q/I'm acting like a single-quoted string/

%Q|"I'm acting like a double-quoted string" --Anonymous|

我还没有和Ruby一起工作很长时间,但我从未在生产代码中遇到过这种引用方法。

除了避免使用反斜杠内部转义引号的显而易见的能力之外,这种引用常规单引号或双引号的方法的常见用例是什么?它们通常用于单行还是多行字符串?如果用于多行字符串,他们是否比HEREDOC字符串更受青睐?有没有一个特定的Ruby成语,他们经常被发现?

提问于
用户回答回答于

它们非常适用于在JavaScript中使用JavaScript进行转义,因为它已经“耗尽”了引用方法:

link = %q[<a href="javascript:method('call')">link</a>]

我也发现它们在处理多行SQL语句时非常有用:

execute(%Q[
  INSERT INTO table_a (column_a)
    SELECT value
      FROM table_b
      WHERE key='value'
])

用户回答回答于

概观

除了“避免内部转义报价”以及之前由@tadman提供的例子,还有其他用例:

  • 自动生成与生成器本身相同语言的代码(例如,Ruby生成Ruby)
  • 提供干净格式的代码,不会混淆文本编辑器的语法高亮功能
  • 允许存储可能必须通过多个存储层的代码块(诸如与网站交互的数据库,或与文本编辑器交互的代码段管理系统,其与子shell等交互)

细节

这种方法是一种通用而强大的习惯用法,可与任何形式的自动代码生成工具很好地配合使用,包括但不限于用其他语言编写样板代码的工具,或管理IDE或文本编辑器代码片段的工具。

在这些情况下,解决方案所做的不仅仅是帮助避免使用反斜杠来避免引号。没有这样的解决方案,有些情况下生成的代码可能变得非常难以维护。

要查看这方面的例子,随时查看以下参考资料。

参考

扫码关注云+社区