2011-09-14 31 views
11

Tại sao công việc sau đây trong R?Tại sao `: =` làm việc như một toán tử infix?

> `:=` <- function(x, y) x + y 
> 1 := 2 
[1] 3 

sự hiểu biết của tôi là % được yêu cầu cho các nhà khai thác ghi vào người dùng định nghĩa. Có các tùy chọn khác (có thể dễ dàng hơn để nhập) không?

Trả lời

11

Điều này là do := là, như <- hoặc <<-, định nghĩa là LEFT_ASSIGN cho phân tích cú pháp của R.
Xem http://svn.r-project.org/R/trunk/src/main/gram.y

Điều này có nghĩa rằng := là một trường hợp đặc biệt và bạn có thể cũng không mong đợi rằng bất kỳ khác tùy chọn có sẵn.

+0

Thật kỳ lạ khi bạn có thể che giấu các toán tử không có% infix hiện tại với các định nghĩa vô lý. –

+0

Điều kỳ quặc đối với tôi là ': =' chỉ được định nghĩa cho trình phân tích cú pháp, nhưng định nghĩa của ': =' là vắng mặt. – kohske

+0

Cảm ơn @kohske. Nhìn vào mã đó, có vẻ như ': =' là mã thông báo "rảnh rỗi" duy nhất được trình phân tích cú pháp nhận ra. – pete

Các vấn đề liên quan