View pure修饰符:
使用view与pure不需要gwei
% H* s$ g3 V, U0 m$ F, d
view:不能修改链上数据只能访问2 q: Q1 {4 A, @ T3 t
pure:不能访问链上数据,被修饰的方法里的变量只能在方法内使用5 I. t. L# r1 ^# v; _! s
$ D$ i/ q0 v' d. m3 z5 S
- contract ViewPureExample {
- uint public age;. C* S$ W4 ^$ ~, m0 a- l1 u2 Y$ b
- function increaseAge() public{0 W. g) Q9 P6 M0 L# ^0 S# m. k
- age ++; r! v3 l, R/ o" P |: A8 ^
- }
- - N5 s# L5 s- Y6 s
- function GetViewAge() public view returns(uint){ //view 修饰
- //age ++;// 不可修改变量1 O+ _0 ~2 o! ^, m8 \$ `; {
- return age;& k3 s' s: r7 I& ?- ?9 v2 c
- }
- function GetPureAge(uint age) public pure returns(uint){ //因为pure方法 所以需要设置参数
- age ++;, @# d& a4 E `0 ]2 o
- return age;//如果直接return会直接报错 因为pure修饰 所以不能访问方法外的变量
- }
- }
% C0 x6 M$ T+ W
/ p) T& t, h L& q6 f8 H
Public internal private external 方法修饰符:% e) l7 d6 e- I5 w6 T
public:任何地方都可以调用
internal:只有本sol文件调用
private:只有本合约能调用2 H- d; r P+ E( r, O) f! g) c
9 ^% K9 W' _0 C, I2 j
external:只能从外部调用即合约外部
- contract PublicExternalPrivateInternal {1 L8 @- E: ^) B/ y
- uint age = 100;
- function GetAgeWithPublic() public view returns(uint){ //外部内部都可调用# H, `7 N, z" W- D
- return age;
- }1 {5 C4 [, u% Z
- function GetAgeWithInternal() internal view returns(uint){ // 本sol文件调用
- return age; n4 H5 T6 ~, {) @9 V2 \$ I
- }
- function GetAgeWithPrivate() private view returns(uint){ //本合约调用, N/ S* j6 k F4 T. F! @3 X0 V3 q
- return ag;6 z; N4 b8 \( V( W2 ?
- }
- function GetAgeWithExternal() external view returns(uint){ //只能外部% B9 w7 Z) e! m# A- {3 H0 j# [
- //调用
- return age;
- }8 t8 h+ j& Z+ i8 p( Y! n0 y }
- ! q: d# X3 x6 N9 ]$ j/ o% t
- function Callfunction() public view returns(uint){' I$ ?: P3 [( s. J2 ^
- return GetAgeWithPrivate();//方法可以调用方法只要被调用的方法允许. P+ _; g' j- e1 B B
- }9 [3 t( k( u& M
- }
4 z( O [& |# \% R* T9 b# b1 h
可以自行编译后尝试调用查看输出7 o; \- H; n, K% M; z
* b5 R+ h! U! a) F G
( b" J- g, \( C
简单的合约调用:
- contract Salary {# j, P# M; |6 S$ N- H3 d' N6 N
- uint public data;# q/ \* [4 k) O' j3 m7 g; {
- function getData() external view returns(uint){
- return data;
- }
- function setData(uint _data) external {4 P \7 g" Q& v
- data = _data;
- } , V! u$ E6 i- @& G
- }3 L4 R5 s3 E3 D/ S
- contract Employee {
- Salary salart;
- constructor(){$ k1 J3 h3 P/ L+ v2 j- Z
- salary = new Salary();, ]6 @9 K' N1 i: p W" r1 f1 w5 X
- }
- function getSalary() external view returns(uint){
- return salary.getData();
- }
- function setSalaty(uint _data) external {# ~" }1 K) z( a( M; _, u
- salary.setData(_data);
- }
- }