View pure修饰符: o1 k9 {( H3 p) s: n1 h' O% v
使用view与pure不需要gwei
* N2 _" E! q0 b& I- w0 f- g
view:不能修改链上数据只能访问3 V9 Y* a6 w) e, B8 Y$ O
pure:不能访问链上数据,被修饰的方法里的变量只能在方法内使用( I* e/ n" c+ R1 ]7 G% I, J8 s
. d! U& @2 s5 m. @3 P8 n* f5 ~
- contract ViewPureExample {
- uint public age;
- function increaseAge() public{
- age ++;, g6 ~% T' u' g
- } }0 P! k2 Y2 h6 W! ?; O5 F
- function GetViewAge() public view returns(uint){ //view 修饰4 \% d8 T4 j2 Z
- //age ++;// 不可修改变量3 l; x$ `1 ? k6 a) A
- return age;( l9 P8 g; B" X, O2 ~0 a/ P" ~! }
- }
- , E) h* b! c% s1 A- a) ^ w
- function GetPureAge(uint age) public pure returns(uint){ //因为pure方法 所以需要设置参数
- age ++;
- return age;//如果直接return会直接报错 因为pure修饰 所以不能访问方法外的变量' s3 H1 B) t0 S
- }
- }
9 j% P T0 }/ C2 \. X1 \9 N
$ W3 j. e% C8 ?% d3 z: N# P
Public internal private external 方法修饰符:
public:任何地方都可以调用5 y2 e2 F: K9 b7 O) x+ }" a
: T4 v8 a+ m, i! b. B# P
internal:只有本sol文件调用
private:只有本合约能调用
! F e. i% H! G) y7 n! m0 o7 _
external:只能从外部调用即合约外部7 @6 s7 n4 h% o
- contract PublicExternalPrivateInternal {: `1 d1 e( X& }' }
- uint age = 100;
- function GetAgeWithPublic() public view returns(uint){ //外部内部都可调用3 T) ?8 Q4 f3 D# g$ y
- return age;
- }
- function GetAgeWithInternal() internal view returns(uint){ // 本sol文件调用
- return age;
- }
- ) b1 J' c5 `8 u x% H" n
- function GetAgeWithPrivate() private view returns(uint){ //本合约调用
- return ag;
- }
- function GetAgeWithExternal() external view returns(uint){ //只能外部3 `5 r: S6 l' {: n0 y
- //调用
- return age;/ _. t6 f) t9 Y; x* T- H
- }2 N V1 c+ j8 J$ S" w. K
- 1 n7 G5 d2 z5 o! n }0 o6 r. V
- function Callfunction() public view returns(uint){
- return GetAgeWithPrivate();//方法可以调用方法只要被调用的方法允许9 x0 j& I: F/ y5 ?# A$ T
- }
- & C- g5 u. k$ M: o" J- B- M! X
- }
* X1 i' L) y9 t2 M% q
可以自行编译后尝试调用查看输出# p/ \4 z( `+ F9 K% ?- W
2 Q- ?# w2 Y/ ~4 Q8 o: E6 w; v% b/ v
% T' v2 x9 N, h/ d! \) ^8 @
简单的合约调用:
- contract Salary {
- uint public data;# x; P3 |- U$ G( G! h
- function getData() external view returns(uint){
- return data;) S A \) `, @6 ] r. c
- }
- function setData(uint _data) external {
- data = _data;
- }
- }
- contract Employee {
- Salary salart;% W# f3 ^ F. W! ?
- constructor(){3 T$ i6 N% D- g% L/ q2 Z N# X4 ^
- salary = new Salary();, X5 K L7 R0 k
- }
- 2 h. Q+ [& N0 }$ Q; O _8 d
- function getSalary() external view returns(uint){6 V3 s1 c! v. K8 L. s
- return salary.getData();6 e/ O( _0 h5 c: i5 e; V; M; Y8 u
- }8 e) Z. b3 e& ?( U5 f% ~1 { V3 p1 l& [
- function setSalaty(uint _data) external {
- salary.setData(_data);
- }
- }