如何使用 Solidity 操作 Solidity 结构?
How to manipulate a Solidity struct with Solidity?
我正在编写一个智能合约,在其中我在一个函数中创建一个对象(结构),然后我想在另一个函数中更改属性。结构的一个属性被添加到映射中,这就是我跟踪它们的方式,但即使我创建了一个函数来从映射中获取结构的属性,我仍然不太清楚如何更改它们。
这是结构体
struct Component {
uint compID;
string compManufacturer;
string compDetails;
address owner;
address[] pastOwners;
bool transfer;
}
这是我尝试更改结构中的值的函数示例。
function transfer (address factory, uint id) public {
address compad;
address[] compowners;
bool boolean;
(,,, compad, compowners, boolean) = getComponent(id);
require(component.transfer == true);
component.owner = factory;
pastOwners = pastOwners.push(factory);
}
函数getComponent
returns 结构中的所有内容,在这里我初始化了一些局部变量来存储我需要的变量。但是,我不确定我之后所做的工作是否有效,因为这样局部变量似乎没有用,如果我更改局部变量,则更改不会在实际对象中进行。如果我错了,请纠正我。任何帮助表示赞赏。
假设您有一个映射,例如:
mapping(uint => Component) public components;
你可以这样操作:
components[id].compDetails = "comp details";
我正在编写一个智能合约,在其中我在一个函数中创建一个对象(结构),然后我想在另一个函数中更改属性。结构的一个属性被添加到映射中,这就是我跟踪它们的方式,但即使我创建了一个函数来从映射中获取结构的属性,我仍然不太清楚如何更改它们。
这是结构体
struct Component {
uint compID;
string compManufacturer;
string compDetails;
address owner;
address[] pastOwners;
bool transfer;
}
这是我尝试更改结构中的值的函数示例。
function transfer (address factory, uint id) public {
address compad;
address[] compowners;
bool boolean;
(,,, compad, compowners, boolean) = getComponent(id);
require(component.transfer == true);
component.owner = factory;
pastOwners = pastOwners.push(factory);
}
函数getComponent
returns 结构中的所有内容,在这里我初始化了一些局部变量来存储我需要的变量。但是,我不确定我之后所做的工作是否有效,因为这样局部变量似乎没有用,如果我更改局部变量,则更改不会在实际对象中进行。如果我错了,请纠正我。任何帮助表示赞赏。
假设您有一个映射,例如:
mapping(uint => Component) public components;
你可以这样操作:
components[id].compDetails = "comp details";