Ruby 的 %q / %Q 引用方法有什么用例?

2024-01-11

我一直在阅读 Thomas 的《Programming Ruby 1.9》,并发现了替代的分隔单引号和双引号方法(%q / %Q)。我也从其他 Ruby 语言参考资料中了解了它们。

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

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

我使用 Ruby 的时间并不长,但我已经never在生产代码中遇到这种引用方法。

除了显而易见的能力避免内部转义引号使用反斜杠,这种通过常规单引号或双引号引用的方法的常见用例是什么?它们通常用于单行或多行字符串吗?如果在多行字符串中使用,它们是否比 HEREDOC 字符串更受青睐?是否存在特定的 Ruby 习惯用法?


当您已经“用完”引用方法时,它们对于使用 JavaScript 转义 HTML 非常有用:

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'
])

这样做的优点是您不需要注意查询中使用的引用类型。它可以与单、双或两者一起使用。它们也比 HEREDOC 风格的方法要简单得多。

Ruby 提供了其他类似的便捷方法,例如%r可以构造正则表达式。当尝试编写一个处理类似的东西时,这可以避免斜线炎http://否则就必须逃避。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ruby 的 %q / %Q 引用方法有什么用例? 的相关文章

随机推荐

  • 是否可以有一个从释放存储操作到不同线程中的存储的释放序列?

    我知道线程 2 中的释放存储操作和线程 1 中的获取加载操作之间会出现同步关系 即使该加载操作不直接读取线程 2 存储的值 前提是有一个释放存储操作和实际读取的存储之间的 释放顺序 只要 实际读取的存储与释放存储操作位于同一线程中 在修改顺
  • 在 Powershell 中运行 Start-Website 命令时出现“无法创建文件”错误

    目前我正在尝试运行这个 powershell 脚本 Param websiteName physicalPath import module WebAdministration website get website where objec
  • 在运行时清除日志文件:被另一个进程错误使用

    我在我的应用程序中使用 Serilog 框架 在我的应用程序中 当日志文件大小达到 2MB 时 我通过将现有文件从 file log 重命名为 file log bak 并创建新的 file log 来创建日志文件的备份 在运行时 我在读取
  • 如何检测 React Native 应用程序何时关闭(而不是暂停)?

    我到处都找过 但找不到这个问题的答案 我如何检测用户何时尝试关闭我的 React Native 应用程序 如进程正在运行 并且他们手动管理其应用程序并强制退出它 我想在发生这种情况时添加注销功能 但是找不到检测它的方法 AppState似乎
  • SQLCipher 与 DBFlow

    我曾经使用过 DBFlow 它在数据库方面非常简单 但我想问是否有一个很好的例子来将 SQLCipher 与 DBFlow 一起使用 我已点击此链接寻求帮助 Raizlabs DBFlow https github com Raizlabs
  • Python Pandas 按小时对日期时间进行分组并计算行数

    这是我的交易数据框 其中每一行表示一个交易 date station 30 10 2017 15 20 A 30 10 2017 15 45 A 31 10 2017 07 10 A 31 10 2017 07 25 B 31 10 201
  • 访问类中的变量

    我想访问一个类中的变量 而不是作为类的实例 例如 class myclas private list array 1 2 3 我需要以这种方式访问 list 的值 myclass list 不可能 还有其他方法吗 谢谢 编辑 谢谢大家的回答
  • 垃圾收集运行时成本的大O分析

    当推理垃圾收集语言中的运行时成本时 诸如以下语句的成本是多少 myList null 用 n 列表中的元素数量 表示 为了便于论证 请将该列表视为引用类型的单链表 无需终结 更一般地说 我正在寻找有关如何使用 GC 语言分析运行时成本的任何
  • Java Eclipse 插件开发 - 以编程方式保存所有项目文件

    我正在为 Eclipse 开发一个插件 我希望它建议用户在运行之前保存未保存的资源 这与 eclipse 建议您在调试之前保存未保存的文件的行为类似 本质上 我想打开以下对话框 任何帮助将不胜感激 如果您在该对话框上按 alt shift
  • Hibernate 中带有连接表的分页

    对此有很多疑问 但我找不到具体的答案 我是 Hibernate 新手 正在尝试实现分页 假设我有两个实体 Parent 和 Child 定义如下 Entity Table name Parents public class Parent I
  • 如何获取 .net 中数组的唯一值?

    假设我有这个数组 MyArray 0 aaa MyArray 1 bbb MyArray 2 aaa 是否有一个 net 函数可以给我唯一的值 我想要这样的东西作为函数的输出 输出数组 0 aaa 输出数组 1 bbb 假设您有 Net 3
  • Apache 别名“最佳猜测”文件名

    使用 Apache 和 mod rewrite 我可以将复杂的请求重写为简单的文件名 例如 RewriteRule shortcut long way around 1 这可以反过来吗 我希望将一个简单的请求重写为未知文件 但我可以通过文件
  • Javamail 更改主题行的字符集

    我正在使用 Javamail javax mail 发送邮件 我成功地将邮件内容调整为utf 8 但是我无法将主题行设置为 utf 8 编码字符串 我什至尝试过 mail setSubject new String subject getB
  • Webpack Uglify 导致路由停止工作

    当我丑化 webpack 包时 路由停止工作 没有任何错误消息或日志消息 我正在使用 oclazyload 来延迟加载 Route js module exports function app var routeConfig functio
  • 不以某些文字开头的 ASP.NET MVC 路由

    我需要为 url 创建一条不从某些文字开始的路由 我创建了以下路由定义 routes MapRoute something new Controller Home Action Index new something sampleliter
  • ARM 汇编中 ADRP 和 ADRL 指令的语义是什么?

    ADRP http infocenter arm com help index jsp topic com arm doc dui0802a ADRP html 4KB 页的地址 位于 PC 相对偏移处 ADRL http infocent
  • 如何使用c#压缩Ms Access数据库

    是否可以使用 C 压缩 Msaccess 数据库 如果可以的话请告诉我方法 你可以尝试这样的事情 public static void CompactAndRepair string accessFile Microsoft Office
  • 使用 .NET 5 Web api 和 Lambda RIE 在本地测试 AWS Lambda 容器

    我正在按照说明在本地测试 lambda 容器https docs aws amazon com lambda latest dg images test html https docs aws amazon com lambda lates
  • 增加文件上传大小 WordPress / IIS 7

    我正在尝试增加 WordPress 博客中的文件上传大小 以允许管理员发布他的电子书和大型 PDF 文件 该网站托管在 GoDaddy IIS 7 上 我尝试了以下操作 但没有成功 网络配置
  • Ruby 的 %q / %Q 引用方法有什么用例?

    我一直在阅读 Thomas 的 Programming Ruby 1 9 并发现了替代的分隔单引号和双引号方法 q Q 我也从其他 Ruby 语言参考资料中了解了它们 q I m acting like a single quoted st