作用:
對於所有public的狀態變數,solidity語言編譯器,提供了自動為狀態變數生成對應的getter(訪問器)的特性測試**:在合約內,我們可以直接操作及訪問data狀態變數,但在合約外我們只能用data()的方式來訪問。另外,在合約內,我們不能直接訪問data(),因為訪問器函式的可見性是external。
直觀版:
(1)合約內訪問public狀態變數a-----------------------> 直接用a即可 【可set】【可訪問】
(2)合約外訪問public狀態變數a-----------------------> 用a() 【只能訪問】
(3)狀態變數所建立的訪問器函式,與變數同名。
pragma solidity ^0.4.0;
contract accessgetter
}contract setvar
}
下對於非基本型別型別的狀態變數進行舉例:
1、列舉
列舉的訪問器與基本型別類似,均是生成與狀態變數同名的函式。
pragma solidity ^0.4.0;
contract enumgetter
color public color = color.green;
function f() returns (color, color)
}
2、陣列
陣列的訪問器要帶引數,以表示陣列的下標測試**:
(1)一維變長陣列
pragma solidity ^0.4.0;
contract arraygetter
}
(2)多維陣列
pragma solidity ^0.4.0;
contract arraygetter
}
3、對映
顯而易見,跟陣列差不多的操作。測試**:對於對映型別,它的訪問器也是有引數的,引數為對映定義的鍵型別。
pragma solidity ^0.4.0;
function f() returns (uint, uint)
}
4、結構體
結構體的訪問器也是同名的函式。訪問器返回結果是結構體中的每個變數。
pragma solidity ^0.4.0;
contract structgetter
s public s = s(10, "hello",hex"1234");
function f() returns (uint, bytes32)
}
5、注意事項?
solidity不支援通過external的訪問變長內容?但是remix則可以。。
pragma solidity ^0.4.0;
contract complex
data internal arr;
function f() returns (uint, bytes3)
}
上述**將返回參考文章:1
,0x000123
。
solidity學習筆記
1 狀態變數是放在區塊鏈上 2 view修飾的函式,讀取和訪問狀態變數,表示訪問狀態變數 區塊鏈上的資料 但是不會修改,僅限於訪問,不消耗資源 3 pure修飾的函式,不修飾也不讀取狀態變數 區塊鏈上的資料 不會消耗任何資源 4 不用view,pure等修飾的函式,會修改區塊鏈上的資料,會消耗資源 ...
Solidity學習筆記(3)
在此後的學習,將更加深入理解solidity的方方面面 solidity原始檔的布局 引入其他的原始檔 注釋合約的結構 型別變數型別 列舉 參考型別對映 包括左賦值的操作符 在基本型別間的轉換 型別匯出 單元區域性和全域性可見變數 ether單元 time單元 特殊變數和函式 表示式和控制結構 控制...
以太坊 Solidity學習
函式set和get可以用來變更或取出變數的值。該合約能完成的事情並不多 由於以太坊構建的基礎架構的原因 它能允許任何人在合約中儲存乙個單獨的數字,並且這個數字可以被世界上任何人訪問,且沒有可行的辦法阻止你發布這個數字。當然,任何人都可以再次呼叫 set 傳入不同的值,覆蓋你的數字,但是這個數字仍會被...