// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.13;
library Groups {
struct Group {
mapping(address => bool) members;
function addMember( Group storage self, address addr ) public returns (bool) { // error
if(self.members[addr]) {
return false;
}
self.members[addr] = true;
return true;
}
function delMember( Group storage self, address addr ) public returns (bool) {
if(self.members[addr]) {
return false;
}
self.members[addr] = false;
return true;
}
}
}
发布于 2022-05-09 05:06:21
if(self.members[addr] == true) {
...
}
发布于 2022-05-09 05:10:12
为什么不:
mapping(address => bool) members;
function addMember(address _address) public {
require(members[_address] == false, "Member is already listed");
members[_address] == true;
}
function removeMember(address _address) public {
require(members[_address] == true, "Address is already out");
members[_address] == true;
}
function memberStatus(address _address) public returns(bool){
return members[_address];
}
发布于 2022-05-09 07:24:50
请在编写函数之前关闭结构,不要在struct中添加函数,这可能会有所帮助
pragma solidity ^0.8.0;
library Groups {
struct Group {
mapping(address => bool) members;
}
function addMember( Group storage self, address addr ) public returns (bool) { // error
if(self.members[addr]) {
return false;
}
self.members[addr] = true;
return true;
}
function delMember( Group storage self, address addr ) public returns (bool) {
if(self.members[addr]) {
return false;
}
self.members[addr] = false;
return true;
}
}
https://ethereum.stackexchange.com/questions/127842
复制相似问题