簡體   English   中英

停止函數中的R.call參數

[英]R .call argument in stop function

stop函數中.call參數的用途是什么?

幫助頁面( stop )說明:

呼叫。 logical,表示調用是否應成為錯誤消息的一部分。

有人可以通過一個直觀的例子解釋.call參數嗎?

謝謝

試試吧:

f = function () stop('foo')

g = function () stop('bar', call. = FALSE)

f() # Error in f(): foo
g() # Error: bar

...並比較輸出。 這是唯一的區別。

參數的使用是指您希望隱藏最終用戶的不相關細節,否則這些細節會淹沒實際的錯誤消息或主動誤導。

例如, 我有一個包含以下功能的包 1

#' @export
import = function (module, ...) {
    # … some code here …
    module_path = find_module(module)
    # … more code here …
}

find_module = function (module) {
    # … some code here …
    if (no_module_found)
        stop('Unable to load module ', module, '.', call. = FALSE)
}

現在,您可以看到函數import是從包中導出的,但函數find_module不是。 因此,用戶不知道這個功能, 也不應該知道它:它是一個不相關的實現細節。 如果我沒有指定call. = FALSE call. = FALSEstop上方,則該錯誤消息將不包含該隱藏功能,這將只是混淆了包的用戶的參考。


1這是一個小謊言,代碼現在不同了; 但該軟件包的早期版本確實包含此代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM