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(和派生)引号的情况下.这只是一个没有文档记录的功能,还是我在这里缺少的东西?
这些都完全相同
"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.此外,为所有这些功能添加示例可能也值得.
我不认为它是一个没有文档记录的功能,而是现有功能设计所固有的功能.
甲双引号字符串("...")内插形式的表达式{...}作为代码.所以它才有用.
一个q报价,在默认情况下,就像是一个单引号字符串('...').因此,在默认情况下,它并没有插值形式的表达{...}.但是,如果你添加c的副词它,然后做插这些c颂歌块,所以在默认情况下在双引号串的工作同样的事情也适用q:c.
或者也许我错过了一些东西.我们的盲人似乎大致相互补充.总之,我们可能有50/50的视力,无论这意味着什么.:)
| 归档时间: |
|
| 查看次数: |
95 次 |
| 最近记录: |