【问题标题】:Does R 4.0.0. make it possible to define foo"(...)" operators, similar to the newly introduced r"(...)" syntax?是否 R 4.0.0。是否可以定义 foo"(...)" 运算符,类似于新引入的 r"(...)" 语法?
【发布时间】:2020-08-07 23:29:39
【问题描述】:

R 4.0.0 为原始字符串引入了新语法:

r"(raw string here can contain anything except the closing sequence)"

但是 R 3.x.x 中的相同结构产生了语法错误:

错误:“r”(asdasd)“”中出现意外的字符串常量

这是否意味着解释器在 R 4.0.0 中发生了变化。 ?
如果是这样 - R 4.0.0。提供一种机制来定义像foo"()"这样的自定义函数?

【问题讨论】:

    标签: r syntax interpreter rawstring


    【解决方案1】:

    不,目前这是不可能的(我也不认为它很快就会成为可能)。

    这是新闻项目:

    有一种用于指定原始字符常量的新语法,类似于 C++ 中使用的语法:r"(...)"... 任何不包含序列 )" 的字符序列。这使得编写包含反斜杠或单引号和双引号的字符串变得更容易。更多详情请见?Quotes

    https://cran.r-project.org/doc/manuals/r-devel/NEWS.html

    然后来自?Quotes

    原始字符常量也可以使用类似于 C++ 中使用的那个:r"(...)"... 任意字符 序列,但它不能包含结束序列 )"。分隔符对 []{} 也可以是 使用,并且R 可以用来代替r。对于额外的 灵活性,可以在开场报价之间放置多个破折号 和开始分隔符,只要出现相同数量的破折号 在结束分隔符和结束引号之间。

    https://github.com/wch/r-source/blob/trunk/src/library/base/man/Quotes.Rd

    这是添加此功能的提交(SVN 补丁的git 镜像):

    https://github.com/wch/r-source/commit/8b0e58041120ddd56cd3bb0442ebc00a3ab67ebc

    【讨论】:

    • 感谢和 +1,特别是包含提交。根据那里的代码,似乎确实调整了解析器 (src/main/gram),但仅允许在引用前使用 rR
    猜你喜欢
    • 2010-10-05
    • 1970-01-01
    • 2018-02-15
    • 2011-07-27
    • 1970-01-01
    • 1970-01-01
    • 2017-09-30
    相关资源
    最近更新 更多