簡體   English   中英

如何使用 function 重新分配結構值

[英]How to reassign a struct value with a function in solidity

我正在嘗試更改結構中 boolean 的值以切換 function 的可訪問性。 但是在 function 運行之后,它似乎沒有重新分配 boolean 值。我嘗試用枚舉替換 boolean,因為它只有兩個輸入,但它仍然不起作用。 我該怎么做呢。

        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++;                
        }

您只是在更新參考。 你必須在數組中更新。

解決方案:

         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++;                
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM