2015-09-14 8 views
6

?invisibleは括弧のは不可視は永遠には続かないだろうが、私はそれがなくなったときに説明して何かを見つけることができませんことを意味しいつinvisible()によって返されたオブジェクトは見えなくなりますか?

Return a (temporarily) invisible copy of an object.

と述べています。私は特に(this old answer of mineから)このような構造に疑問を抱いています:

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

printはすでに目に見えないその戻り値をマークしているため)外invisibleはおそらく不要です。 withVisible()は、この関数の戻り値がどちらの方法でも見えないと報告していますが、言語によって保証されているか、現在の実装で正しく機能するかはわかりません。試行錯誤によって

+0

それはCのコードは、単純にその引数を戻し見えます。ですから、一時的には 'invisible'呼び出しから返されたものは印刷されませんが、' printf 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

これは有益な情報ですが、実装の観察された振る舞いではなく、*言語仕様*(Rの範囲にあるもの)からの回答を期待しています。言い換えれば、私たちはそれが何をしているかを見ることができますが、それは*それが何をするべきかということです。 – zwol

+0

確かに、私も知りたいです。 –

関連する問題