Solidity
參數前下劃線的作用是什麼?
我看到在參數名稱前使用下劃線的契約,如下所示:
function Greeter(string _greeting) public { greeting = _greeting; }
這些下劃線的目的是什麼?它們是否與 Python 中的“內部使用”名稱具有相似的含義?
沒有語義差異。它是一種用於區分函式參數和全域變數的樣式。
在這種情況下,它區分命名的全域變數
greeting
和相應的函式參數。
在大多數情況下,儲存變數將在整個合約程式碼中的更多地方使用。函式參數可能會出現在一些地方,但在大多數情況下,它不會像儲存變數那樣普遍。
這位開發人員認為,
greeter
與_greeter
. 在我的程式碼中,函式參數獲取下劃線前綴,因為我在較少的位置使用它。這使我的其餘程式碼可以自由使用普通變數,而不是帶前綴的變數。一個不太自以為是的原因是,對於公共變數,使用下劃線前綴名稱也意味著getter函式將具有相同的名稱。這導致了一個合約 ABI,其中一些函式具有下劃線前綴,這可能會讓使用者感到困惑。