View pure修饰符:
使用view与pure不需要gwei7 o4 F( h9 T9 N; G4 j& L: w& e
view:不能修改链上数据只能访问8 c- |0 G9 T! F) T
pure:不能访问链上数据,被修饰的方法里的变量只能在方法内使用
4 N, D+ g' x& T2 A1 c* l
- contract ViewPureExample {# G% V x0 X; W% _
- uint public age;
- function increaseAge() public{
- age ++;
- }
- + d" g( v4 Y1 u& j5 M) Q% x
- function GetViewAge() public view returns(uint){ //view 修饰
- //age ++;// 不可修改变量
- return age;) t- t7 y- f t, _
- }) U0 v+ ~" p) ~% v+ Q4 w
- function GetPureAge(uint age) public pure returns(uint){ //因为pure方法 所以需要设置参数* L# E7 x- J: b1 U6 b) w0 n* t
- age ++;
- return age;//如果直接return会直接报错 因为pure修饰 所以不能访问方法外的变量& P$ o j1 Y4 d; m% e
- }; I; |; J# g/ u9 A: w0 n8 `
- }
/ N4 }7 B8 U# |6 e. O A
( d6 d. ~8 e$ O2 N( \$ w4 E" ^
Public internal private external 方法修饰符:
public:任何地方都可以调用
internal:只有本sol文件调用4 q- E) U* v' s8 i) b3 q4 D
private:只有本合约能调用
external:只能从外部调用即合约外部
0 J( c! \ L8 b
, |0 @" s0 d# V; M& b% Q
- contract PublicExternalPrivateInternal {
- uint age = 100;
- function GetAgeWithPublic() public view returns(uint){ //外部内部都可调用. H8 r/ t3 y d' e, o
- return age;, ?* w* Q) K7 _* }5 s3 Y
- }6 j4 {9 P8 N8 t5 m7 d. @
- function GetAgeWithInternal() internal view returns(uint){ // 本sol文件调用! |; Q' k% C- T
- return age;
- }( T- }2 R% I- ^ p
- 9 i( n# S2 v$ Q+ n+ |& C7 K
- function GetAgeWithPrivate() private view returns(uint){ //本合约调用! X' T o% z$ {& o6 T2 @
- return ag;
- }
- function GetAgeWithExternal() external view returns(uint){ //只能外部8 @; W$ d6 g2 ^/ v
- //调用" T2 ~4 U% [9 a w b# I: e& p
- return age;: Y6 l+ ]; k/ m6 {3 w6 W* _' `( W
- }
- function Callfunction() public view returns(uint){8 P7 J7 g% ~. @
- return GetAgeWithPrivate();//方法可以调用方法只要被调用的方法允许
- }
- }
可以自行编译后尝试调用查看输出1 F" R! \0 q( f. M+ M
/ f6 u) Z3 ^+ y+ v$ {
简单的合约调用:
- contract Salary {9 J. ^7 I. h6 R, ]
- uint public data;1 a/ p' y- n$ p0 ^' e" f0 Z
- function getData() external view returns(uint){
- return data;
- }, z: K0 |% D2 O7 z: T3 H: y3 @ ?8 {
- function setData(uint _data) external {
- data = _data;
- } ) P4 ^- L* y% f" } Y
- }' l0 d+ J N1 `% P, N0 F
0 [/ o" j$ M/ T4 j7 ^' Y2 _( a
- contract Employee {/ G7 n: t( |" P9 p6 X7 ^
- Salary salart;) O" f& K: A8 t/ _$ s# m+ U/ t
- constructor(){
- salary = new Salary();
- }, c$ O7 V: P/ h+ L4 [
- 1 W( E3 N& x! {6 ^9 {' k
- function getSalary() external view returns(uint){
- return salary.getData(); X/ {. \0 t+ T( c
- }
- 8 O A9 F0 P7 C' w% G" ?
- function setSalaty(uint _data) external {
- salary.setData(_data);
- }
- }