Openzeppelin

在 OpenZeppelin 中使用 transfer 與 _transfer 的區別(破折號函式相同)

  • December 19, 2020

在相同情況下的 openzeppelin 合約中,我們有 2 種類型的函式用於相同的功能,其中一種以破折號 (_) 開頭。這就是 transfer(x, y, z)/_transfer(x, y, z) 函式的情況。

我知道,如果我想修改繼承函式的行為,我應該使用 _transfer(x, y, z)。

但真正的區別是什麼?因為它發生在很多函式中,我不確定我應該使用 transfer(x, y, z) 還是 _transfer(x, y, z)。

那麼,如果我不打算修改它的原始行為,我應該使用 transfer 還是 _transfer?

提前致謝

函式的原因_transfer只是程式碼重用。

它從函式transfertransferFrom.

如果您需要實現它們,也可以從函式mint和呼叫它。burn

當在多個地方使用完全相同的功能時,在一個地方而不是多個地方實現它是有益的,因為:

  1. 它允許您在一個地方修復/更改/更新常用功能
  2. 可執行(二進制)程式碼的整體大小隨後會變小

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