solidity的实操练习题
时间: 2023-11-18 08:06:08 浏览: 69
很高兴为您介绍solidity的实操练习题。以下是一个简单的练习题,旨在帮助您熟悉solidity的基本语法和概念:
<<引用>>
这是一个名为StringTest的合约,其中包含三个函数:getName,setName和printName。getName函数返回一个字符串变量name的值,setName函数将该变量的值设置为传递给它的字符串参数,printName函数将该变量的值打印到控制台。
您可以使用Remix等solidity IDE来编写和测试此合约。以下是一个示例代码:
```solidity
pragma solidity ^0.4.0;
contract StringTest{
string name = "xms";
function getName() public view returns(string){
return name;
}
function setName(string _name) public{
name = _name;
}
function printName() public{
bytes memory nameBytes = bytes(name);
uint len = nameBytes.length;
for(uint i = 0; i < len; i++){
byte b = nameBytes[i];
if(b >= 0x20 && b <= 0x7E){
// printable ASCII character
printChar(b);
}
}
}
function printChar(byte b) private pure{
bytes memory bs = new bytes(1);
bs[0] = b;
string memory s = string(bs);
print(s);
}
function print(string s) private pure{
bytes memory bs = bytes(s);
uint len = bs.length;
for(uint i = 0; i < len; i++){
byte b = bs[i];
assembly {
mstore8(add(0x20, i), b)
}
}
assembly {
// load free memory pointer
let ptr := mload(0x40)
// store string length at free memory pointer
mstore(ptr, len)
// increment free memory pointer
ptr := add(ptr, 0x20)
// copy string data to free memory
calldatacopy(ptr, add(0x20, bs), len)
// return free memory pointer
return(ptr, len)
}
}
}
```
您可以使用以下步骤在Remix中测试此合约:
1. 在Remix中创建一个新文件,并将上面的代码复制粘贴到文件中。
2. 在左侧面板中选择Solidity编译器,并单击Compile按钮。
3. 在左侧面板中选择Deploy & Run Transactions,并选择StringTest合约。
4. 在右侧面板中,您将看到三个函数:getName,setName和printName。单击getName按钮,您将看到返回值为“xms”的结果。
5. 单击setName按钮,并在参数框中输入一个新的字符串值,例如“hello”。然后单击Transact按钮。
6. 再次单击getName按钮,您将看到返回值为“hello”的结果。
7. 最后,单击printName按钮,您将在控制台中看到“hello”的输出。