Почему знак знака принимается в определении функции? - PullRequest
4 голосов
/ 30 апреля 2020

Из-за опечатки я обнаружил, что этот код работает [обратите внимание на повторение - во 2-й строке]

foo <- function()
-------------------------
{
  1
}

Вызов foo() возвращает -1. Число - определяет, является ли возвращаемое значение положительным или отрицательным [нечетное число возвращает отрицательное число].

Я не нашел ничего относительно этого определения функции R, поэтому сейчас я спрашиваю, почему это разрешено и какова цель этого.

Даже официальная документация R вообще не упоминает об этом. Есть идеи?

Примечание: invisible(1) не работает. Вывод не подавляется, если перед открытием есть символ знака {.

1 Ответ

2 голосов
/ 30 апреля 2020

Вы использовали странные допуски для правил синтаксиса R. Для тел функций.

Поскольку синтаксис функций в R допускает любое выражение после списка аргументов, обычно это R-функции предоставить список выражений, окруженных {}. В других языках это иногда называют выражением «блок». В R «оценочное значение» блока является оценочным значением последнего выражения в блоке.

  • Если -1 является действительным выражением, то -{1} является действительным выражением как хорошо.

- также является унарным оператором отрицания и повторяется в R. Следовательно:

1 = 1
-1 != -1
--1 == 1
----1 == 1
---1 == 1

Итак, оценка идет:

foo <- function() ------------------------- {1}
foo <- function() ------------------------- 1
foo <- function() -1

И из-за правил синтаксиса R, вы можете легко go:

foo <- function() -1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...