View pure修饰符:. ^& z0 y. q# p. q& I. n
使用view与pure不需要gwei3 r: K2 b' S* k) q
view:不能修改链上数据只能访问
0 ^7 R, |$ z# x3 x. b& G, n4 U( C
pure:不能访问链上数据,被修饰的方法里的变量只能在方法内使用, x) D0 V: [: i8 i
- contract ViewPureExample {
- uint public age;8 r) r; O+ z5 c/ u3 i) t
- function increaseAge() public{
- age ++;
- }
- * C- X# c+ ?2 s
- function GetViewAge() public view returns(uint){ //view 修饰/ n; o$ _" t4 _7 Y: b
- //age ++;// 不可修改变量
- return age;' y. @4 | V" v6 [" A8 ?
- }: z9 |% q# c& d, s! s
- * G4 m) [8 E( D
- function GetPureAge(uint age) public pure returns(uint){ //因为pure方法 所以需要设置参数
- age ++;" {" q& K7 V& {; X9 R
- return age;//如果直接return会直接报错 因为pure修饰 所以不能访问方法外的变量' E9 e' [& m+ u& V2 s! K
- }7 v4 h/ {6 B# `/ J& p
- }
7 e9 @9 d9 `4 [# ]8 u6 D2 \9 g
Public internal private external 方法修饰符:
public:任何地方都可以调用
7 z: v5 K( b8 t. Y" l L% J" c3 v
internal:只有本sol文件调用# p, _1 P3 z# H7 i
private:只有本合约能调用6 Z. V& i2 f+ `! ?# `' B
external:只能从外部调用即合约外部
5 o& N3 h8 A4 C% z6 G5 Y! H
- contract PublicExternalPrivateInternal {* o' k& {, B C9 r( [& {
- uint age = 100;! g0 F, S, G, B; i5 w) R+ z2 d% @
- function GetAgeWithPublic() public view returns(uint){ //外部内部都可调用. B2 S9 S) V- w9 R" E8 x3 B! [
- return age;
- }
- function GetAgeWithInternal() internal view returns(uint){ // 本sol文件调用
- return age;. S! M5 p4 I @
- }0 U/ D3 O( r2 H- T) e
- function GetAgeWithPrivate() private view returns(uint){ //本合约调用* T: a3 A3 }+ n9 j" H) ^
- return ag;
- }
- function GetAgeWithExternal() external view returns(uint){ //只能外部
- //调用
- return age;! d6 |- g: l2 D. p3 }
- }) U5 D" R; w9 U2 s& E
- 7 l; l' }$ Q7 K, x( Z
- function Callfunction() public view returns(uint){- D9 J5 F9 s: n
- return GetAgeWithPrivate();//方法可以调用方法只要被调用的方法允许% Y! A1 s! `! z
- }
- }
可以自行编译后尝试调用查看输出
; v/ S; P, P* O* O- O0 C
简单的合约调用:/ q1 k7 f% Q( C" e0 G
- contract Salary {
- uint public data;
- function getData() external view returns(uint){
- return data;* Z& m) j8 A9 f. A( p/ @4 V
- }
- 9 s u O0 [$ f) d9 k7 B
- function setData(uint _data) external {
- data = _data;( ^- R' m) _7 q+ [
- }
- }0 k" f% f7 |. M6 E: { R1 g
v! l O8 W3 r% T6 z' z5 H
% U: ~8 L7 }5 X+ }
- contract Employee {, }6 H8 X. O+ O: g- I7 I& s9 A3 Q
- Salary salart;
- constructor(){7 {% q; b; X0 W& F
- salary = new Salary();6 r% \1 |+ z& v* |3 K
- }6 D" k, \( X, [( |/ u8 d
- function getSalary() external view returns(uint){& {. i8 ^+ J. t* [5 m8 @+ i# D& Q
- return salary.getData();! f7 O$ @' U: M N( a! q
- }% C H! C* u" f" }; j
- * e; h& o' g& X1 x
- function setSalaty(uint _data) external {
- salary.setData(_data);3 d% H& N% w' I' s7 Q
- }
- }