Solidity
任何人都可以解釋為什麼 call、delegateCall、staticCall 函式被稱為低級函式嗎?
正如我在許多資源中所讀到的,這些功能是
low level functions
. 我想知道,我是否應該使用這些方法與已經部署的合約進行互動?
它們允許您執行合約函式的動態呼叫(而不是靜態呼叫)。
這類似於Java 中的反射,您可以使用函式名稱字元串執行函式。
它也類似於在 Python 或 Javascript 等解釋語言中呼叫函式的方式。
例如:
def func(x): return x * 2 y = eval("func")(3) print(y)
或者:
function func(x) { return x * 2; } const y = eval("func")(3); console.log(y);
在像 Solidity 這樣的強類型語言中,這意味著在執行時執行的函式不是由編譯器決定的,也就是說,它不是硬編碼在編譯器生成的字節碼中。
這些低級函式在幾種不同的場景中很有用,以下是其中的一些:
- 您不確定返回值的類型
- 您想在不恢復的情況下處理失敗