2015-09-14 9 views
6

?invisible निक्षिप्त तात्पर्यअदृश्य() द्वारा वापस ऑब्जेक्ट कब अदृश्य हो जाता है?

Return a (temporarily) invisible copy of an object.

कि जो अदृश्यता हमेशा के लिए नहीं होगा, लेकिन मैं कुछ भी बताते हैं कि जब यह गायब हो जाता है नहीं मिल सकता है कहते हैं। मैं विशेष रूप से (this old answer of mine से) इस तरह निर्माणों के बारे में सोच रहा हूँ:

printf <- function(...) invisible(print(sprintf(...))) 

जहां बाहरी invisibleहै शायद अनावश्यक (क्योंकि print पहले से ही अपने वापसी मान अदृश्य चिह्नित)। withVisible() रिपोर्ट करता है कि इस फ़ंक्शन का रिटर्न वैल्यू किसी भी तरह से अदृश्य है, लेकिन मुझे नहीं पता कि यह भाषा द्वारा गारंटीकृत है या वर्तमान कार्यान्वयन में काम करने के तरीके के समान ही है।

+0

यह सी कोड बस अपने तर्क देता है लग रहा है। तो, अस्थायी रूप से, इसका मतलब यह हो सकता है कि 'अदृश्य' कॉल के भीतर से लौटाई गई कुछ भी प्रिंट नहीं होगी, लेकिन 'printf <- function (...) + अदृश्य (1) जैसी कुछ; printf (1) 'अभी भी' 1' प्रिंट करेगा, जबकि 'printf <- function (...) अदृश्य (1); printf (1) 'wont – jenesaisquoi

उत्तर

1

परीक्षण और त्रुटि द्वारा:

# invisible 
withVisible(invisible())$visible 
[1] FALSE 

### passing the invisible value through a function seems to 
# preserve the invisibility 
withVisible(identity(invisible()))$visible 
[1] FALSE 

# the <- operator just returns its arguments, so it confirms the above 
withVisible(i <- invisible())$visible 
[1] FALSE 
# but the assigned value is no longer invisible 
withVisible(i)$visible 
[1] TRUE 

### passing an invisible value as argument keeps the invisibility 
f <- function(x) withVisible(x)$visible 
f(1) 
[1] TRUE 
f(invisible(1)) 
[1] FALSE 

### every other operation seems to cancel the invisibility. 
# e.g. assigning an invisible value cancels the it 
i <- invisible() 
withVisible(i)$visible 
[1] TRUE 

withVisible(invisible(1) + 1)$visible 
[1] TRUE 
+0

यह उपयोगी जानकारी है, लेकिन मैं वास्तव में कार्यान्वयन के मनाए गए व्यवहार के बजाय * भाषा विनिर्देश * (सीमा आर में से एक) से एक उत्तर की उम्मीद कर रहा हूं। दूसरे शब्दों में, हम देख सकते हैं कि यह * क्या करता है, लेकिन यह है कि यह * क्या करना है *, और क्या यह इस तरह रहेगा? – zwol

+0

यकीन है, मैं भी जानना चाहता हूं। –

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