可以插入无符号变量或常量吗?

jjm*_*elo 4 string-interpolation perl6

虽然我没有找到它的文档,显然你可以通过{}插入它们周围的无形变量和常量:

constant ? = " " xx 4;
say "{?}Tabbed"; # OUTPUT: «       Tabbed?»
Run Code Online (Sandbox Code Playgroud)

显然,您需要使用:c副词来执行此操作.

say q:c"? is {?}"; # OUTPUT: «? is 3.141592653589793?»
Run Code Online (Sandbox Code Playgroud)

但这只是在使用if q(和派生)引号的情况下.这只是一个没有文档记录的功能,还是我在这里缺少的东西?

Bra*_*ert 8

这些都完全相同

          "a $b {$c}"
qq        "a $b {$c}"
Q :qq     "a $b {$c}"
Q :double "a $b {$c}"

Q :b :s :a :h :c :f "a $b {$c}"
Q :backslash :scalar :array :hash :closure :function "a $b {$c}"
Run Code Online (Sandbox Code Playgroud)

为了使字符串文字解析器{}看作创建闭包,它需要启用闭包功能.

:qq/ :double启用的其中一项是:c/ :closure.

你也可以用它来禁用它:!closure.

say qq :!closure "{ 1 + 2 }";
# { 1 + 2 }
Run Code Online (Sandbox Code Playgroud)

那就是它以:qq/ :double语义开始并关闭:closure语义.


qqRakudo中定义该功能的地方

role qq does b1 does c1 does s1 does a1 does h1 does f1 {
    token starter { \" }
    token stopper { \" }
    method tweak_q($v) { self.panic("Too late for :q") }
    method tweak_qq($v) { self.panic("Too late for :qq") }
}
Run Code Online (Sandbox Code Playgroud)

b1启用反斜杠
c1启用闭包
s1启用标量
a1启用数组
h1启用哈希
f1启用功能


它已记录在案,您提供了文档的链接.
也许可以更清楚地表明:

  • "" 是的缩写 qq ""
  • qq ""Q :qq ""/的缩写Q :double ""
  • :qq/ :double是所有人的简称:backslash :closure :scalar :array :hash :function.

此外,为所有这些功能添加示例可能也值得.


rai*_*iph 6

我不认为它是一个没有文档记录的功能,而是现有功能设计所固有的功能.

引号字符串("...")内插形式的表达式{...}作为代码.所以它才有用.

一个q报价,在默认情况下,就像是一个引号字符串('...').因此,在默认情况下,它并没有插值形式的表达{...}.但是,如果你添加c的副词它,然后插这些c颂歌块,所以在默认情况下在双引号串的工作同样的事情也适用q:c.

或者也许错过了一些东西.我们的盲人似乎大致相互补充.总之,我们可能有50/50的视力,无论这意味着什么.:)

  • 如果你有50/50的视力,那就意味着你在50'看到50岁时正常人会看到什么. (2认同)