个人目录
以太坊solidity学习记录(一)新版在线remix编译器的使用(2020.4.27)
以太坊solidity学习记录(二)基础操作整理
以太坊solidity学习记录(三)基础数据操作
以太坊solidity学习记录(四)地址与交易
以太坊solidity学习记录(五)函数入门
以太坊solidity学习记录(六)内存与结构体
1.solidity的四种可见度/访问权限
public:任何人都可以调用该函数,包括DApp的使用者。
private:只有合约本身可以调用该函数(在另一个函数中)。
internal:只有这份合同以及由此产生的所有合同才能称之为合同。
external:只有外部可以调用该函数,而合约内部不能调用。
2.solidity的三种修饰符
view: 可以自由调用,因为它只是“查看”区块链的状态而不改变它
pure: 也可以自由调用,既不读取也不写入区块链
payable:常常用于将代币发送给合约地址。
3.一个solidity的函数应有以下部分组成
function
你的函数名字(类型1 名字,类型2 名字,。。。,类型n 名字) 如果没有就什么都不填即可
可见度/访问权限,即public/private/internal/external 如果不写则系统默认为public并且警告
修饰符,即view/pure/payable 如果需要花费gas则不写
returns(类型1 名字,类型2 名字,。。。,类型n 名字) PS.如果有的话
注意:调用函数时如果需要输入字符串,则在输入框之内需要将字符串用双引号括起来。
尝试了一下最新的网页版不加双引号也可以成功,可能是更新之后新增的功能,具体见图
pragma solidity ^0.4.0;
contract helloworld {
function stringtest(string inputstr) public view returns(string){
return inputstr;
}
}
4.布尔类型
pragma solidity ^0.4.0;
contract helloworld {
bool boola=true; //声明一个布尔类型的值,只用一个等号
function booltesta() public view returns(bool){
return boola;
}
function booltestb(int a,int b) public view returns(bool){
return a==b;
}
}
测试结果
5.与,或
即&&,||
pragma solidity ^0.4.0;
contract helloworld {
function andtestTT() public view returns(bool){
return true&&true;
}
function andtesTF() public view returns(bool){
return true&&false;
}
function andtestFF() public view returns(bool){
return false&&false;
}
function ortestTT() public view returns(bool){
return true||true;
}
function ortesTF() public view returns(bool){
return true||false;
}
function ortestFF() public view returns(bool){
return false||false;
}
}
测试结果
6.通常运算符
即+,-,*,/,%以及特殊的符号**代表x的x次幂
pragma solidity ^0.4.0;
contract helloworld {
function jiatest(int a,int b) public view returns(int){
return a&#