【问题标题】:Check that object is null in solidity mapping检查实体映射中的对象是否为空
【发布时间】:2020-04-14 07:55:21
【问题描述】:

我有这个可靠性映射

mapping (string => Ticket) public myMapping;

我想检查myMapping[key] 是否存在。我该如何检查?

【问题讨论】:

    标签: ethereum solidity


    【解决方案1】:

    整个存储空间虚拟初始化为0(没有未定义)。 因此,您必须将该值与您的类型的 0 值进行比较。 例如,mapping[key] == address(0x0) 或 mapping[key] = bytes4(0x0)。

    【讨论】:

      【解决方案2】:

      没有直接的方法来检查映射是否具有特定的键。但是您可以检查映射属性是否具有价值。以下示例认为Ticket 是具有某些属性的结构。

      pragma solidity >=0.4.21 <0.6.0;
      
      contract Test {
      
          struct Ticket {
             uint seatNumber;
          }
      
          mapping (string => Ticket) myMapping;
      
          function isExists(string memory key) public view returns (bool) {
      
              if(myMapping[key].seatNumber != 0){
                  return true;
              } 
              return false;
          }
      
          function add(string memory key, uint seatNumber) public returns (bool){            
              myMapping[key].seatNumber = seatNumber;            
              return true;
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2015-06-23
        • 2014-09-15
        • 2014-08-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-10
        • 2016-10-20
        • 1970-01-01
        相关资源
        最近更新 更多