Solidity

任何人都可以解釋為什麼 call、delegateCall、staticCall 函式被稱為低級函式嗎?

  • May 6, 2020

正如我在許多資源中所讀到的,這些功能是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 這樣的強類型語言中,這意味著在執行時執行的函式不是由編譯器決定的,也就是說,它不是硬編碼在編譯器生成的字節碼中。

這些低級函式在幾種不同的場景中很有用,以下是其中的一些:

  • 您不確定返回值的類型
  • 您想在不恢復的情況下處理失敗

引用自:https://ethereum.stackexchange.com/questions/83101