Openzeppelin
在 OpenZeppelin 中使用 transfer 與 _transfer 的區別(破折號函式相同)
在相同情況下的 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
只是程式碼重用。它從函式
transfer
和transferFrom
.如果您需要實現它們,也可以從函式
mint
和呼叫它。burn
當在多個地方使用完全相同的功能時,在一個地方而不是多個地方實現它是有益的,因為:
- 它允許您在一個地方修復/更改/更新常用功能
- 可執行(二進制)程式碼的整體大小隨後會變小