Почему: = разрешено в качестве инфиксного оператора?
Я сталкивался с популярнымdata.table
пакет и одна вещь, в частности, заинтриговали меня. Имеет оператор присваивания на месте
знак равно
Это не определено в базе R. На самом деле, если вы не загрузилиdata.table
пакет, это вызвало бы ошибку, если бы вы попытались использовать его (например,a := 2
) с сообщением:
Ошибка: не удалось найти функцию":="
Кроме того, почему:=
Работа? Почему R позволяет вам определить:=
как инфиксный оператор, в то время как любая другая инфиксная функция должна быть окружена%%
например,
`:=` <- function(a, b) {
paste(a,b)
}
"abc" := "def"
Очевидно, что это не должен быть альтернативный синтаксис%function.name%
для определения инфиксных функций. Являетсяdata.table
эксплуатируя некоторые причуды разбора R? Это взломать? Будет ли это "исправлено" в будущем?