Raku中qq使用大括号分隔符时代码未插值是否为预期行为?
Raku qq引号大括号分隔符无插值问题说明
这是Raku的正常设计逻辑,完全符合官方的引号解析规则,不属于异常或bug。
具体解析规则如下:
- Raku的引号结构支持自定义配对分隔符,包含
{}、[]、()等成对符号。当某类配对符号被用作引号的边界标记时,解析器会优先完成引号边界的配对识别,同类型的符号在引号内部默认仅作为普通文本处理,不会触发对应特殊语法。 - 常规字符串中
{}标记的代码插值功能,仅在{}不是当前引号的分隔符时生效:- 测试代码中的
qq{"Two plus two": { 2 + 2 }}写法,最外层{}是qq的分隔符,因此内部的{ 2 + 2 }会被识别为普通字符串,不会执行插值计算 - 测试代码中的
qq["Two plus two": { 2 + 2 }]写法,qq的分隔符是[],内部的{}符合代码插值的触发条件,因此会正常计算2+2的结果并插入字符串
- 测试代码中的
- 如有特殊场景需要用大括号作为qq分隔符同时实现代码插值,可以使用
&{ ... }显式插值语法,不受分隔符类型限制,示例写法:qq{"Two plus two": &{ 2 + 2 }}运行后会输出"Two plus two": 4。
内容的提问来源于stack exchange,提问作者JustThisGuy
相关产品推荐
相关产品推荐

