Есть ли R 4.0.0. сделать возможным определение операторов foo "(...)", аналогично вновь введенному синтаксису r "(...)"? - PullRequest
6 голосов
/ 24 апреля 2020

R 4.0.0 вводит новый синтаксис для необработанных строк:

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

Но эта же конструкция в R 3.xx вызвала синтаксическую ошибку:

Ошибка: неожиданная строковая константа в "r" (asdasd) ""

Означает ли это, что интерпретатор был изменен в R 4.0.0. ?
А если так - R 4.0.0. обеспечить механизм для определения пользовательских функций, таких как foo"()"?

1 Ответ

4 голосов
/ 24 апреля 2020

Нет, на данный момент это невозможно (и я не ожидал бы, что это станет возможным в ближайшее время).

Вот элемент NEWS:

Существует новый синтаксис для указания необработанные символьные константы, подобные тем, которые используются в 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

Вот (git зеркало SVN-патча) коммита, где была добавлена ​​эта функциональность:

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

...