View pure修饰符:
使用view与pure不需要gwei
) T7 n, H% z0 g o! c
view:不能修改链上数据只能访问; t* d1 \$ b" L: E' v; \5 |
, q' M& ?$ L5 M& a! Z
pure:不能访问链上数据,被修饰的方法里的变量只能在方法内使用( `2 l$ ^7 ~8 s. P! M
- contract ViewPureExample {( y# k1 [' @" F. m- @
- uint public age;" K. o8 m2 P; ?/ Z: n# D. W
- function increaseAge() public{
- age ++;" T2 F- Y5 m! K; I
- }
- function GetViewAge() public view returns(uint){ //view 修饰
- //age ++;// 不可修改变量
- return age;
- }/ ~6 `* j, X' r* p7 ~ }6 j4 @
- function GetPureAge(uint age) public pure returns(uint){ //因为pure方法 所以需要设置参数
- age ++;$ X1 N7 W: C A0 s
- return age;//如果直接return会直接报错 因为pure修饰 所以不能访问方法外的变量( ^, m8 ]9 d: G8 g# A
- }( j) S7 \. e T, {* j b7 Z: k
- }
( _6 v6 J# C# s% g G
Public internal private external 方法修饰符:
public:任何地方都可以调用
internal:只有本sol文件调用3 v1 f- E# W6 \: X
" B- k: M, i0 s7 p
private:只有本合约能调用" r0 }* r0 o n6 b, T7 ~0 {
1 s1 h8 a+ o9 _: }- ~/ X. K* T6 \
external:只能从外部调用即合约外部
% _8 c8 H5 }3 G4 I3 J. J9 v$ L
) @& r/ T7 d9 a- R/ r) Z
- contract PublicExternalPrivateInternal {0 v( Y/ ~/ o5 c4 v6 c
- uint age = 100;* n4 X6 S$ `. A7 }! Y3 f7 s
- function GetAgeWithPublic() public view returns(uint){ //外部内部都可调用
- return age;
- }
- function GetAgeWithInternal() internal view returns(uint){ // 本sol文件调用
- return age;
- }; m: _' { J% E* x% V! `
- ( |4 [/ f% M. y2 d& a7 T
- function GetAgeWithPrivate() private view returns(uint){ //本合约调用2 M: Q: [+ `# E% {# j/ B$ C
- return ag;
- }
- function GetAgeWithExternal() external view returns(uint){ //只能外部: H# Y$ B+ u: X" W' I# t
- //调用: V+ e& P, p. L+ b" Y7 g0 p
- return age;# u8 u. d+ A2 W+ l5 Z4 |& g
- }
- / e' X7 ]2 T y' P8 U
- function Callfunction() public view returns(uint){
- return GetAgeWithPrivate();//方法可以调用方法只要被调用的方法允许7 n* z) s/ K b
- }& ]$ A0 g" m* J
- }
可以自行编译后尝试调用查看输出
) V. n# \4 @. ]2 Y
5 Q2 `6 H1 G. Y* ?
简单的合约调用:
- contract Salary {
- uint public data;
- function getData() external view returns(uint){# D' M2 S2 O- b) E: U* x; g
- return data;
- }- v1 \% o1 ^7 D. R0 Q) V
- 4 P* e9 }$ Q# x& i$ s6 G
- function setData(uint _data) external {
- data = _data;6 k$ Q0 h1 i* d/ w
- }
- }4 X% k) Z) T1 j1 Y6 \1 m) `, S
: L! i h" n( y5 c
- contract Employee {3 R+ [$ f: |" r/ `- \" ^2 I3 p) ]
- Salary salart;
- constructor(){8 |* z: X0 L4 u6 `' \
- salary = new Salary();
- }
- 4 q) y5 a/ m% P/ R+ G
- function getSalary() external view returns(uint){
- return salary.getData();1 ^# e0 T$ o* U
- }9 A; [& s0 \7 B3 q! ^, D7 b2 G
- function setSalaty(uint _data) external {) T ?3 W. x- a& c. t" f
- salary.setData(_data);$ V/ P2 e, |& v( J- [0 k6 J
- }
- }