2014-10-20 8 views
6

.GlobalEnv में, मैं निम्नलिखित चर परिभाषित और ढंग से कामआर: फ़ंक्शन में डिफ़ॉल्ट तर्क कैसे पारित किया जाता है?

x = 0; 
foo <- function(t=x) {x=1; t} 

निम्न तरीकों

foo() # gives 1 
foo(t=x) # gives 0 

किसी को भी मदद कर सकते हैं यह समझाने में जब मैं समारोह कहा जाता है? धन्यवाद!!!

+4

पहले मामले में, फ़ंक्शन जानता है कि इसे 'x' से' t' पास करने की आवश्यकता है। यह अपने अक्षीय दायरे में 'x' की तलाश में है और' x = 1' पाता है। दूसरे मामले में, आप वैश्विक पर्यावरण से 'x = 0' पास करते हैं, इस प्रकार यह इसे फिर से व्याख्यात्मक दायरे में नहीं देखता है और इसे सीधे' t' तक भेजता है। हालांकि अच्छा सवाल है। –

+3

[आलसी मूल्यांकन] पर अधिक पढ़ने (http://adv-r.had.co.nz/Functions.html#function-arguments)। – Gregor

+0

@rawr, क्या आपने देखा [यह] (http://meta.stackoverflow.com/questions/274834/coursera-questions/274835)? :) –

उत्तर

1

एक जवाब में टिप्पणी करने के लिए:

पहले मामले में, समारोह में यह t को x पारित करने के लिए की जरूरत है जानता है। यह 0xको अपने अक्षीय दायरे में देख रहा है और x=1 पाता है। दूसरे मामले में, आप वैश्विक पर्यावरण से x=0 पास करते हैं, इस प्रकार यह इसे फिर से व्याख्यात्मक दायरे में नहीं देखता है और इसे सीधे t पर भेजता है।

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