如何在solidity中用函数重新分配结构值



我正在尝试更改结构中布尔值,以切换函数的可访问性。但在函数运行后,它似乎没有重新分配布尔值。我试着用枚举替换布尔值,因为它只有两个输入,但它仍然不起作用。我该怎么做。

struct Hotel{
uint256 roomNo;
string suiteLevel;
bool isOccupied;    
}
enum Status{
Vacant,
Occupied
}
Hotel[] public hotelroomsarray; 
function newhotel(uint256 _num, string calldata _str, bool _isoccupied) public {
Hotel memory room = Hotel(_num, _str, _isoccupied);
hotelroomsarray.push(room);
}-------i pass in false into this function
function bookroom1() public payable uptofee{
Hotel memory booked = hotelroomsarray[0];                   
require(booked.isOccupied == false, "This room is alraeady occupied");              
payable(owner).transfer(msg.value); 
booked.isOccupied = true;------------part that isn't working                            
bookertoroom[msg.sender] = hotelroomsarray[0];
bookers.push(msg.sender);       
addrtoamntpaid[msg.sender] = msg.value; 
count++;                
}

您只是在更新引用。您必须在数组中进行更新。

soln:

function bookroom1() public payable uptofee{                  
require(booked.isOccupied == false, "This room is alraeady occupied");              
payable(owner).transfer(msg.value); 
hotelroomsarray[0].isOccupied = true;                          
bookertoroom[msg.sender] = hotelroomsarray[0];
bookers.push(msg.sender);       
addrtoamntpaid[msg.sender] = msg.value; 
count++;                
}

最新更新