本小节讨论Solidity智能合约的struct类型,Struct是Solidity中的自定义类型。使用Solidity的关键struct进行自定义。
结构体内还可以再包含字符串,整型,映射,结构体等复杂类型,
先看以下实例
1. 基本的结构体
struct Product{
uint productId;uint productValue;
}
2. 在Store中定义Product结构体
结构体通常需要定义在一个合约当中
contract Store{
struct Product{
uint productId;
uint productValue;
}
}
3. 构造结构体对象
contract Store{
struct Product{uint productId;
uint productValue;
}
function save() public {
Product memory product = Product(2,93);
}
}
4. 结构体应用实例
4.1 将以下代码拷贝到http://remix.ethereum.org/中
contract Store{
struct Product{uint productId;
uint productValue;
}
mapping (uint=>Product) products;
function save() public {
Product memory product = Product(2,93);
products[120]=product;
}
function getPriceOfProductId(uint productId) public view returns (uint){
return products[productId].productValue;
}
}
4.2 编译并运行合约
编译并创建合约实例后,点击右下角的“save”后,在“getPriceOfProductId”右边输入120,再点击“getPriceOfProductId“后,右边出现93,则说明合约调用成功
本节主要讨论了struct类型,最后一个实例涉及到mapping等知识点,请参考作者其他文章
作者:温春水 致力于研究区块链技术
微信:wencs1314 QQ群:612968783
加群和微信,免费获得高质量区块链学习资料