Solidity 变量作用域
局部变量的作用域仅限于定义它们的函数,但是状态变量可以有三种作用域类型:
- public – 公共状态变量可以在内部访问,也可以通过消息访问。对于公共状态变量,将生成一个自动 getter 函数。
- internal – 内部状态变量只能从当前合约或其派生合约内访问。
- private – 私有状态变量只能从当前合约内部访问,派生合约内不能访问。
示例:
// SPDX-License-Identifier: SimPL-3.0 pragma solidity ^0.7.0; contract C { uint public data = 30; uint internal iData= 20; uint private pData= 10; function x() public returns (uint) { data = 3; // 内部访问 iData = 2; // 内部访问 pData = 1; // 内部访问 return data; } } // 调用外部合约 contract Caller { C c = new C(); function f() public view returns (uint) { return c.data(); // 外部访问 // return c.iData(); // error 不允许外部访问 // return c.pData(); // error 不允许外部访问 } } // 派生合约 contract D is C { uint storedData; // 状态变量 function y() public returns (uint) { data = 3; // 派生合约内部访问 iData = 2; // 派生合约内部访问 // pData = 1; //error 不允许派生合约内部访问 return iData; } function getResult() public view returns(uint){ return storedData; // 访问状态变量 } }
Solidity 支持以下类型的运算符:算术运算符比较运算符逻辑(或关系)运算符赋值运算符条件(或三元)运算符让我们看一个简单的表达式:4 + 5 = 9这里4和5称为操作数,+称为运算符。运算符Solidity ...