View pure修饰符:
使用view与pure不需要gwei
view:不能修改链上数据只能访问
pure:不能访问链上数据,被修饰的方法里的变量只能在方法内使用
- contract ViewPureExample {
- uint public age;
- function increaseAge() public{
- age ++;
- }
- function GetViewAge() public view returns(uint){ //view 修饰
- //age ++;// 不可修改变量
- return age;
- }
- function GetPureAge(uint age) public pure returns(uint){ //因为pure方法 所以需要设置参数
- age ++;
- return age;//如果直接return会直接报错 因为pure修饰 所以不能访问方法外的变量
- }
- }
Public internal private external 方法修饰符:
public:任何地方都可以调用
internal:只有本sol文件调用
private:只有本合约能调用
external:只能从外部调用即合约外部
- contract PublicExternalPrivateInternal {
- uint age = 100;
- function GetAgeWithPublic() public view returns(uint){ //外部内部都可调用
- return age;
- }
- function GetAgeWithInternal() internal view returns(uint){ // 本sol文件调用
- return age;
- }
- function GetAgeWithPrivate() private view returns(uint){ //本合约调用
- return ag;
- }
- function GetAgeWithExternal() external view returns(uint){ //只能外部
- //调用
- return age;
- }
- function Callfunction() public view returns(uint){
- return GetAgeWithPrivate();//方法可以调用方法只要被调用的方法允许
- }
- }
可以自行编译后尝试调用查看输出
简单的合约调用:
- contract Salary {
- uint public data;
- function getData() external view returns(uint){
- return data;
- }
- function setData(uint _data) external {
- data = _data;
- }
- }
- contract Employee {
- Salary salart;
- constructor(){
- salary = new Salary();
- }
- function getSalary() external view returns(uint){
- return salary.getData();
- }
- function setSalaty(uint _data) external {
- salary.setData(_data);
- }
- }