View pure修饰符:
使用view与pure不需要gwei
view:不能修改链上数据只能访问8 t3 [' ^2 o+ D/ [
% d* i# }* n. @: c
pure:不能访问链上数据,被修饰的方法里的变量只能在方法内使用
- contract ViewPureExample {
- uint public age;
- function increaseAge() public{
- age ++;' }5 s6 O0 X9 n _
- }) p3 \+ l4 i: v; _: n% ^, S) p
- 6 i$ L6 `: |8 n3 w' J/ [% {! b
- function GetViewAge() public view returns(uint){ //view 修饰
- //age ++;// 不可修改变量
- return age;
- }2 R% X4 f6 C8 G- O8 ~/ p
- function GetPureAge(uint age) public pure returns(uint){ //因为pure方法 所以需要设置参数
- age ++;
- return age;//如果直接return会直接报错 因为pure修饰 所以不能访问方法外的变量
- }
- }
Public internal private external 方法修饰符:+ D6 \0 F7 [. U5 n$ d8 m; N: U
public:任何地方都可以调用' D. l, f6 v: @/ i4 v# v
% @+ `, m2 Q2 O/ ]
internal:只有本sol文件调用
& D: ^4 O: d; N, l
private:只有本合约能调用
external:只能从外部调用即合约外部# @( M! @9 \0 R; U9 n/ M) P
: L6 i1 K$ U+ [' b* g
U% I( D* {- n/ D% F! @
- contract PublicExternalPrivateInternal {
- uint age = 100;
- function GetAgeWithPublic() public view returns(uint){ //外部内部都可调用
- return age;( Y% D* C, _, f
- }
- function GetAgeWithInternal() internal view returns(uint){ // 本sol文件调用9 z; n9 m( D, N" Z
- return age;
- } P6 S$ E, Z# _: M; ~
- function GetAgeWithPrivate() private view returns(uint){ //本合约调用# `7 e& T2 b8 }. t% l* X
- return ag;
- }
- ) ]* l! \ E5 C3 ?& R7 M7 r
- function GetAgeWithExternal() external view returns(uint){ //只能外部
- //调用% ]5 r9 W+ Y4 a; x8 B9 e# Y( \: j
- return age;
- }
- " N4 T1 n3 e7 a6 Q$ G4 _
- function Callfunction() public view returns(uint){" ?( c6 J. M$ i# l' e
- return GetAgeWithPrivate();//方法可以调用方法只要被调用的方法允许: P5 b# i% j' F5 y1 G `
- }
- }
可以自行编译后尝试调用查看输出9 t* n; D. P% @9 u# U) l
" S" e2 o6 T4 F/ Q0 q) K9 L& ]
7 B5 ~# q% @* y+ Y2 v, ~
简单的合约调用:0 _) W" P1 V( e. o& k* }
- contract Salary {
- uint public data;2 a) s) Q% _8 h/ G7 Q* f
- function getData() external view returns(uint){! B' v: U ^ g; }
- return data;6 a, P, U1 d$ Q
- }
- ! G0 r: l/ B! t
- function setData(uint _data) external {
- data = _data;* H( Y# L) U! Q
- }
- }, U D) O% e8 t S7 Y# d
! T! A& y: Y0 I5 M
- contract Employee {
- Salary salart;
- constructor(){9 O/ b- R" m2 @$ a4 [( b
- salary = new Salary();
- }
- function getSalary() external view returns(uint){
- return salary.getData();
- }
- * Z8 M9 x+ [& s0 z& U" w
- function setSalaty(uint _data) external {
- salary.setData(_data);
- }
- }