2011-09-14 17 views
11

आर में निम्नलिखित कार्य क्यों करते हैं?`: =` इंफिक्स ऑपरेटर के रूप में क्यों काम करता है?

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

मेरे समझ गया था कि % उपयोगकर्ता परिभाषित इन्फ़िक्स ऑपरेटरों के लिए आवश्यक था। क्या विकल्प उपलब्ध हैं (संभवतः टाइप करने में आसान) विकल्प?

उत्तर

11

इसका कारण यह है := है, <- या <<-, आर
की पार्सर के लिए LEFT_ASSIGN के रूप में परिभाषित की तरह देखें http://svn.r-project.org/R/trunk/src/main/gram.y

इसका मतलब है कि := एक विशेष मामला है और आप के रूप में अच्छी उम्मीद है कि किसी भी अन्य नहीं हो सकता है विकल्प उपलब्ध हैं।

+0

यह अजीब बात है कि आप मौजूदा गैर-% इन्फिक्स ऑपरेटरों को हास्यास्पद परिभाषाओं के साथ मुखौटा कर सकते हैं। –

+0

मेरे लिए और अधिक अजीब बात यह है कि ': =' केवल पार्सर के लिए परिभाषित किया गया है, लेकिन ': =' की परिभाषा अनुपस्थित है। – kohske

+0

धन्यवाद @ kohske। उस कोड को देखते हुए, ऐसा लगता है कि ': =' पार्सर द्वारा मान्यता प्राप्त एकमात्र "अतिरिक्त" टोकन है। – pete

संबंधित मुद्दे