代码之家  ›  专栏  ›  技术社区  ›  jjmerelo

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

  •  4
  • jjmerelo  · 技术社区  · 6 年前

    虽然我没有找到任何文档,但显然您可以用插入无符号变量和围绕它们的常量:

    constant â²§ = " " xx 4;
    say "{ⲧ}Tabbed"; # OUTPUT: «       Tabbed␤»
    

    显然,你需要 use the :c adverb to do so .

    say q:c"π is {π}"; # OUTPUT: «π is 3.141592653589793␤»
    

    但只有在 q (和派生)使用引号。这仅仅是一个未记录的功能,还是我这里缺少的功能?

    2 回复  |  直到 6 年前
        1
  •  8
  •   Brad Gilbert    6 年前

    这些都完全一样

              "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 / 语义和关闭 关闭 语义学。


    Here 是哪里 qq 特征在rakudo中定义

    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 启用函数


    它是文档化的,并且您提供了指向文档的链接。
    或许可以更清楚地说明:

    • "" 是短的 qq ""
    • “QQ” 是短的 Q :qq "" / Q :double ""
    • QQ / 是所有人的简称 :backslash 关闭 :scalar :array :hash :function .

    另外,为所有这些特性添加示例也是值得的。

        2
  •  6
  •   raiph    6 年前

    我不认为它是未记录的特性,而认为它是现有特性设计的固有特性。

    双重的 引号串(引号串) "..." )插入表单的表达式 {...} 作为代码。所以它只是起作用。

    q 默认情况下,引号类似于 单一的 引号串(引号串) '...' )所以,默认情况下,它是 形式的插值表达式 {…} . 但是如果你加上 c 然后副词 插入这些 C ODE块,因此默认情况下,双引号字符串中的相同内容也适用于 q:c .

    或者也许 我错过了什么。我们似乎对自己的失明有大致的补充。不管这意味着什么,我们可能有50/50的视力。:)

    推荐文章