View pure修饰符:6 \& @# k3 h1 U: Z" X# s
使用view与pure不需要gwei
view:不能修改链上数据只能访问
+ | E( `% |% ]. _
pure:不能访问链上数据,被修饰的方法里的变量只能在方法内使用. P4 l7 M- N/ E! Z! a% [7 h2 n
u2 g$ W B' [9 v
- contract ViewPureExample {
- uint public age;4 Z1 k1 l: @% {' u& h; ~
- function increaseAge() public{ X2 I4 Z. t e/ ^
- age ++;0 v. ^7 x3 q. f* I3 t d
- }
- function GetViewAge() public view returns(uint){ //view 修饰
- //age ++;// 不可修改变量
- return age;
- }9 [0 H$ e: J) l! z
- function GetPureAge(uint age) public pure returns(uint){ //因为pure方法 所以需要设置参数
- age ++;
- return age;//如果直接return会直接报错 因为pure修饰 所以不能访问方法外的变量, \% L0 z1 A; j: i
- }: r+ _- [3 Z+ N9 g9 @% v/ I
- }
' q5 P8 ], Q0 Z6 c0 i: c4 m
Public internal private external 方法修饰符:- ]. f; ^2 p( y
public:任何地方都可以调用
internal:只有本sol文件调用
private:只有本合约能调用
6 O n# \6 t2 p0 D6 z7 X/ j
external:只能从外部调用即合约外部
- contract PublicExternalPrivateInternal {4 O7 }0 e- Y* a
- uint age = 100;' e3 \, o" q4 I+ g
- function GetAgeWithPublic() public view returns(uint){ //外部内部都可调用
- return age;) r! y0 p6 M# W0 N
- }1 ?* b! u4 Q' u0 M$ |% |
- function GetAgeWithInternal() internal view returns(uint){ // 本sol文件调用" [( Y8 G) ~* Q3 `& c; T9 M* t
- return age;
- }
- 5 b) K( V" t" z. U# l/ E
- function GetAgeWithPrivate() private view returns(uint){ //本合约调用
- return ag;( z4 ?# U. X; N$ k/ c; P
- }
- function GetAgeWithExternal() external view returns(uint){ //只能外部
- //调用
- return age;& I' E( k0 p1 u; Q- m+ Q4 a+ o: S
- }
- 7 a8 [) Q2 S& Q0 C. F/ t0 w% G
- function Callfunction() public view returns(uint){
- return GetAgeWithPrivate();//方法可以调用方法只要被调用的方法允许
- }
- }
可以自行编译后尝试调用查看输出; `: |$ K+ ]5 u3 H6 _& f
" b# q2 Y; [/ f8 t9 G
简单的合约调用:
- contract Salary {6 p- R% L1 k. e, X/ X5 [. e) j
- uint public data;
- function getData() external view returns(uint){& g' [5 O4 c& Q, d
- return data;
- }, {( ?: q2 m' N, L3 }/ e- H
- function setData(uint _data) external {
- data = _data;
- } 5 R. }) @2 }7 |/ Y, h
- }5 p9 x- t1 f/ C a! T
b- Y9 B, x3 j" ], S/ o( ^
- contract Employee {' B$ V) c7 c2 j& }- E P0 m
- Salary salart;
- constructor(){
- salary = new Salary();
- }# G ?! E" `6 u% l5 b
- : m7 a( _5 h; C' J) |+ B' q
- function getSalary() external view returns(uint){
- return salary.getData();
- }
- ) {; ~( T+ O9 r3 |) [
- function setSalaty(uint _data) external {- i$ O2 v# | l3 i- G) J" J
- salary.setData(_data);
- }% f* f3 @8 F/ C1 D c4 `
- }