View pure修饰符:
使用view与pure不需要gwei
view:不能修改链上数据只能访问: F, v( C, k. A4 M7 U3 f
pure:不能访问链上数据,被修饰的方法里的变量只能在方法内使用, X5 s4 B: Q' U6 N
i8 _# L0 O3 z. D
- contract ViewPureExample {% ]$ v0 Y. A: n1 Y
- uint public age;
- function increaseAge() public{
- age ++;8 Y0 f. @1 J( `+ P. f- g7 T5 S
- }. q6 G3 Y# q& C, q% d1 a
- function GetViewAge() public view returns(uint){ //view 修饰
- //age ++;// 不可修改变量
- return age;
- }5 M4 J: i4 a% {9 V/ M9 F
- function GetPureAge(uint age) public pure returns(uint){ //因为pure方法 所以需要设置参数
- age ++;7 `$ a5 ~- p* b+ K5 `
- return age;//如果直接return会直接报错 因为pure修饰 所以不能访问方法外的变量
- }
- }
& `8 B, N2 \0 b$ q" t, D
Public internal private external 方法修饰符:
public:任何地方都可以调用
internal:只有本sol文件调用0 q) m+ i9 j9 F2 ~. Y
private:只有本合约能调用7 M- S: U2 \1 j, U
! r" C) a- ^9 {# A
external:只能从外部调用即合约外部
5 q1 i, F4 ], H; i! c' E' r
3 H' i! V8 T. G* B
- contract PublicExternalPrivateInternal {% Q) G& H3 D7 m3 `9 n5 y
- uint age = 100;
- function GetAgeWithPublic() public view returns(uint){ //外部内部都可调用
- return age;
- }( D9 K) U% o( b0 @- k% t* x
- function GetAgeWithInternal() internal view returns(uint){ // 本sol文件调用5 O9 D. M- @3 R& L) `5 B8 L$ |
- return age;& b7 i: i+ d) X* G4 x- b- w9 n
- }
- function GetAgeWithPrivate() private view returns(uint){ //本合约调用6 X. i3 H1 ?2 B
- return ag;
- }8 n. e/ G! s% E w9 B; f/ b
- ) g. _( R- K( p
- function GetAgeWithExternal() external view returns(uint){ //只能外部
- //调用
- return age;5 B3 [5 }& N& X& p) C( \- W+ m+ Z. ^
- }9 J4 A2 J [$ ?) S8 L# W/ L' v
- , h* x" K' j, y$ a
- function Callfunction() public view returns(uint){ L- Z1 U' H9 X
- return GetAgeWithPrivate();//方法可以调用方法只要被调用的方法允许; l2 j5 u9 ]% s9 t8 o2 O+ R1 S6 M5 Y
- }
- 0 f, w# {2 Z, ^* K1 {0 Q* u: L
- }
% x( |3 b& v$ c: `4 W% A; S
可以自行编译后尝试调用查看输出
3 w) A9 A1 |3 P' T7 z0 [) q
简单的合约调用: A2 b/ H5 v" m: x' I- r% C+ h
- contract Salary {
- uint public data;
- function getData() external view returns(uint){/ Z/ ]; D* Q1 G! x4 [
- return data;
- }
- function setData(uint _data) external {
- data = _data;1 c( S6 B" }) i0 I# q" x
- }
- }
* j% G, |1 M& ?1 o: V) y7 a
- contract Employee {
- Salary salart;
- constructor(){
- salary = new Salary();; }2 \! T, Y1 m
- }
- function getSalary() external view returns(uint){
- return salary.getData();
- }
- function setSalaty(uint _data) external {' p. Z1 s0 K/ v2 `* }: c* d/ c0 I+ b
- salary.setData(_data);: I; T( I) z/ B' r, G; W* r6 B2 n
- }7 S2 y, k9 q5 y- i c
- }