可以插入无符号变量或常量吗?
Can sigil-less variables or constants be interpolated?
虽然我没有找到它的文档,但显然您可以通过 {}:
在它们周围插入无符号变量和常量
constant ⲧ = " " xx 4;
say "{ⲧ}Tabbed"; # OUTPUT: « Tabbed»
显然,您需要 use the :c
adverb to do so。
say q:c"π is {π}"; # OUTPUT: «π is 3.141592653589793»
但这仅在使用 q
(和派生的)引号的情况下。这只是一个未记录的功能,还是我在这里遗漏了什么?
我不认为它是未记录的功能,而是现有功能设计的固有功能。
A double 引用字符串 ("..."
) 将 {...}
形式的表达式插入为代码。所以它只是工作。
q
引号默认情况下类似于 单 引号字符串 ('...'
)。因此,默认情况下,它 而不是 内插 {...}
形式的表达式。但是,如果您添加 c
副词,那么 会 插入这些 c
ode 块,因此默认情况下在双引号字符串中工作的相同内容也适用于 q:c
.
或者 我可能遗漏了什么。我们似乎在盲点上大致互补。我们一起可能有 50/50 的愿景,无论这意味着什么。 :)
这些完全相同
"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}"
为了让字符串文字解析器将 {}
视为创建闭包,它需要启用闭包功能。
:qq
/ :double
启用的功能之一是 :c
/ :closure
。
您也可以使用 :!closure
禁用它。
say qq :!closure "{ 1 + 2 }";
# { 1 + 2 }
即以:qq
/:double
语义开始,关闭:closure
语义。
Here 是在 Rakudo
中定义 qq
特征的地方
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") }
}
b1
启用反斜杠
c1
启用关闭
s1
启用标量
a1
启用数组
h1
启用散列
f1
启用功能
已记录,您向文档提供了 link。
也许可以更清楚地说明:
""
是 qq ""
的缩写
qq ""
是 Q :qq ""
/ Q :double ""
的缩写
:qq
/ :double
是所有 :backslash
:closure
:scalar
:array
:hash
[=41= 的缩写].
此外,可能值得为所有这些功能添加示例。
虽然我没有找到它的文档,但显然您可以通过 {}:
在它们周围插入无符号变量和常量constant ⲧ = " " xx 4;
say "{ⲧ}Tabbed"; # OUTPUT: « Tabbed»
显然,您需要 use the :c
adverb to do so。
say q:c"π is {π}"; # OUTPUT: «π is 3.141592653589793»
但这仅在使用 q
(和派生的)引号的情况下。这只是一个未记录的功能,还是我在这里遗漏了什么?
我不认为它是未记录的功能,而是现有功能设计的固有功能。
A double 引用字符串 ("..."
) 将 {...}
形式的表达式插入为代码。所以它只是工作。
q
引号默认情况下类似于 单 引号字符串 ('...'
)。因此,默认情况下,它 而不是 内插 {...}
形式的表达式。但是,如果您添加 c
副词,那么 会 插入这些 c
ode 块,因此默认情况下在双引号字符串中工作的相同内容也适用于 q:c
.
或者 我可能遗漏了什么。我们似乎在盲点上大致互补。我们一起可能有 50/50 的愿景,无论这意味着什么。 :)
这些完全相同
"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}"
为了让字符串文字解析器将 {}
视为创建闭包,它需要启用闭包功能。
:qq
/ :double
启用的功能之一是 :c
/ :closure
。
您也可以使用 :!closure
禁用它。
say qq :!closure "{ 1 + 2 }";
# { 1 + 2 }
即以:qq
/:double
语义开始,关闭:closure
语义。
Here 是在 Rakudo
中定义qq
特征的地方
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") }
}
b1
启用反斜杠
c1
启用关闭
s1
启用标量
a1
启用数组
h1
启用散列
f1
启用功能
已记录,您向文档提供了 link。
也许可以更清楚地说明:
""
是qq ""
的缩写
qq ""
是Q :qq ""
/Q :double ""
的缩写
:qq
/:double
是所有:backslash
:closure
:scalar
:array
:hash
[=41= 的缩写].
此外,可能值得为所有这些功能添加示例。