节省gas利器
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;
contract test4{
string Myname = 'dhy';
function getname() public view returns(string memory){
return Myname;
}
function changename(string memory _new_name) public
{
Myname = _new_name;
}
function pure_name(string memory _name) pure public returns(string memory){
return _name;
}
}
固定长度bytes
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;
contract test4{
bytes1 public num1 = 0x7a;
//添加了public固定了长度,不可以改变
bytes2 public num2 = 0x7a68;
function getlength() public view returns(uint){
return num1.length;
//长度为1
}
}
不同bytes之间的转化:
bytes和string的转换:
二维数组
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;
contract TwoArray{
//数字3表示有3个元素,数字2表示每个元素里面有2个元素
uint[2][3] grade = [[1,2],[3,4],[5,6]];
//获取元素的长度,结果为3
function getlength() public view returns(uint){
return grade.length;
}
//结果为2
function getTlength() public view returns(uint){
return grade[0].length;
}
//获取元素的内容
function getContxt() public view returns(uint[2][3] memory){
return grade;
}
//修改内容
function changename() public{
grade[1][0] = 100;
}
}
循环/判断
if/else
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;
contract test4 {
function ifTest(uint256 _number) public pure returns(bool){
if(_number == 0){
return(true);
}else{
return(false);
}
}
}
for循环
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;
contract test4 {
function forTest() public pure returns(uint256){
uint sum = 0;
for(uint i = 0;i < 10;i++){
sum += i;
}
return(sum);
}
}
while循环
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;
contract test4 {
function whileTest() public pure returns(uint256){
uint sum = 0;
uint i = 0;
while(i < 10){
sum += i;
i++;
}
return(sum);
}
}
do-while循环
function doWhileTest() public pure returns(uint256){
uint sum = 0;
uint i = 0;
do{
sum += i;
i++;
}while(i < 10);
return(sum);
}
三元运算符
三元运算符是`Solidity`中唯一一个接受三个操作数的运算符,规则`条件? 条件为真的表达式:条件为假的表达式`。此运算符经常用作`if`语句的快捷方式。
function ternaryTest(uint256 x, uint256 y) public pure returns(uint256){
// return the max of x and y
return x >= y ? x: y;
}
payable转账
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;
contract test4 {
//payable关键字表示我们可以给合约地址充值,转账
function pay() public payable{
}
//获取账户的余额
function getBalance() public view returns(uint){
return address(this).balance;
}
//账户
function getThis() public view returns(address){
return address(this);
}
}
// SPDX-License-Identifier: SimPL-2.0
pragma solidity ^0.4.0;
contract Transfer{
//转账
function transfer() public payable{
address account=0x5B38Da6a701c568545dCfcB03FcB875f56beddC4;
account.transfer(msg.value);//把钱转到account中去
}
}