我应该如何将值添加到具有部分参数的结构中

     2023-02-18     225

关键词:

【中文标题】我应该如何将值添加到具有部分参数的结构中【英文标题】:how should I add values to structures with partial arguments in solidity 【发布时间】:2021-06-29 20:07:49 【问题描述】:
contract ClusterHeadNode 

  struct ClusterNode 
      
      string name;
      string[] ordinarynodes;
  
  mapping(string => ClusterNode[]) clusternodes;

  
  mapping(string => string[]) headnodes;

  function addClusterNode(string memory  _basename , string memory _clustername) internal 
      
        clusternodes[_basename].push(ClusterNode(_clustername, null ));
        
    
    
    function getClusterNodes(string memory _name) public view returns(string[] memory)
        return headnodes[_name];
    


在上面的代码中,我应该在 clusterNode 结构中添加唯一的名称

在尝试这个时我遇到了一个错误

**contracts/hybridblockchain.sol:19:38: TypeError: Wrong argument count for struct constructor: 1 arguments given but expected 2. clusternodes[_basename].push(ClusterNode(_clustername));

请让我摆脱这个,或者他们是否有任何替代解决方案,请告诉我

【问题讨论】:

【参考方案1】:

您的结构包含两种类型:stringstring[](字符串数组)。

当您创建实例时,您将传递ClusterNode(_clustername, null )。但是null 在 Solidity 中不是有效值,编译器会忽略它(不是因为它无效,而是因为它为 null)。

解决方案:传递一个空数组

我根据您的原始代码制作了一个传递空数组的缩小示例:

pragma solidity ^0.8.0;

contract ClusterHeadNode 

  struct ClusterNode 
      string name;
      string[] ordinarynodes;
  

  mapping(string => ClusterNode[]) clusternodes;

  function addClusterNode(string memory _basename, string memory _clustername) external 
      string[] memory ordinarynodes;  // instanciate empty array
      ClusterNode memory clusternode = ClusterNode(_clustername, ordinarynodes); // instanciate the struct, pass the empty array to the struct
      clusternodes[_basename].push(clusternode); // push the struct into the array of structs
  


【讨论】:

当我尝试这段代码时,我收到了这个错误 UnimplementedFeatureError: Copying of type struct ClusterNode memory[] memory to storage not yet supported. @vijaykumar 该错误是由上述代码以外的其他东西产生的。也许你错误地改变了它?我能够成功编译(在 Solidity 0.8.3 下)并创建一个调用 addClusterNode() 函数的事务。 imgur.com/JQMQ7sK

如何将值“未定义”传递给具有多个参数的函数?

...略参数。“不省略参数”是什么意思。我的意思是我们不应该像这个例子一样省略parm2:functionmyFunction(par 查看详情

如何将值添加到其他类的数组列表中?

】如何将值添加到其他类的数组列表中?【英文标题】:Howtoaddvaluesintoanarraylistfromotherclasses?【发布时间】:2014-11-0517:34:11【问题描述】:请原谅我,因为我还是Java的新手。我有9个不同的课程。在我的帐户驱动程序中,我需要创... 查看详情

如何将值从javascript传递到iosuiwebview

我需要将javascript变量传递给iOSUIWebView,我在Android上也很容易做到,但是不能在这里做。我需要的是我将点击webview中的链接,该链接将反过来调用这个JS函数buttonClickPAss一些参数,我想要我在webside中传递的所有参数到本机swift代... 查看详情

如何将值添加到 Spring Data Redis 中的嵌入集

】如何将值添加到SpringDataRedis中的嵌入集【英文标题】:HowcanIaddvaluestoanembeddedsetinSpringDataRedis【发布时间】:2021-08-2907:01:40【问题描述】:我正在编写一个类似聊天的小型应用程序,它基本上有两个实体“房间”和“用户”。数... 查看详情

如何在 Reactjs 中的状态对象内将值添加到数组中

】如何在Reactjs中的状态对象内将值添加到数组中【英文标题】:HowtoprependavaluetoanarrayinsidetheobjectofstateinReactjs【发布时间】:2019-02-2318:01:52【问题描述】:我有一个初始状态:this.state=transition:completedStages:[]我想要实现的是,在函... 查看详情

如何将值插入单链表

...入方法的ofc作用是将数字添加到排序列表L中。这个数字应该 查看详情

当我尝试从网页添加 DOM 元素时,我的数组得到 0 值,如何将值添加到 .each 函数中的列表?

】当我尝试从网页添加DOM元素时,我的数组得到0值,如何将值添加到.each函数中的列表?【英文标题】:Iamgetting0valuesformyarraywhenItrytoaddDOMelementsfromawebpage,howtoaddvaluestolistsin.eachfunction?【发布时间】:2016-08-3113:33:46【问题描述】:... 查看详情

我应该将啥类型添加到作为参数接收的类构造函数中?

】我应该将啥类型添加到作为参数接收的类构造函数中?【英文标题】:WhattypeIshouldaddtoclassconstructorreceivedasparameter?我应该将什么类型添加到作为参数接收的类构造函数中?【发布时间】:2020-03-2915:24:44【问题描述】:我正在Type... 查看详情

如何将值发送到 Flutter 中的多个屏幕?

...Flutter的新手,我正在使用CRUD制作一个应用程序,在家中应该出现每个用户,并且当触摸它时应该将用户的id发送到其他屏幕以便能够查询.我已经尝试使用Class和Streams将数据发送到其他屏幕,但我无法做到,我展示了一个我正 查看详情

如何在具有布局模板的页面中添加 head 部分

】如何在具有布局模板的页面中添加head部分【英文标题】:Howtoaddheadsectioninapagethathaslayouttemplate【发布时间】:2014-07-1212:01:27【问题描述】:我需要为具有布局“_BasicLayout.cshtml”的页面“Index.cshtml”添加特定的css文件。在ASP.NETW... 查看详情

将值添加到复杂数组

...:00【问题描述】:我的软件有一个模块数组,我需要知道如何通过PHP添加到数组中,而无需用户直接添加(即自动添加)。我可以使用如下所示的简单数组来做到这一点:$array=array(\'key\'=>\'value\');但是,我的数组看起来像这样... 查看详情

如何使用 SwiftUI 将值数组写入 Firestore

...有一个从“项目”集合中获取“项目”列表的屏幕。用户应该能够选择多个项目,并在按下按钮时将它们添加到“电影”集合中的文档中。我似乎无法弄清楚如何编写将这些项目列表写入电影文档的函数。下面的代码示例这是获... 查看详情

如何使用 XSLT 代码将值映射到共享点设计器中手动添加的列

】如何使用XSLT代码将值映射到共享点设计器中手动添加的列【英文标题】:HowtomapvaluetomanuallyaddedcolumnsinsharepointdesignerusingXSLTcode【发布时间】:2019-04-2723:53:35【问题描述】:我有两列:Month和No,它们是从SharePoint列表中检索到的... 查看详情

如何将值添加到数组 - Angular2

】如何将值添加到数组-Angular2【英文标题】:Howtoaddvaluestoarray-Angular2【发布时间】:2016-10-1520:09:47【问题描述】:我在angular2中制作了一个这样的数组,还制作了一个表格来填写表格,效果很好。但我的问题是在不填写表单的情... 查看详情

我应该如何以及在哪里将 Glyphicons 文件夹添加到我的项目中?

】我应该如何以及在哪里将Glyphicons文件夹添加到我的项目中?【英文标题】:HowandwhereshouldIaddtheGlyphiconsfoldertomyproject?【发布时间】:2016-11-1616:11:34【问题描述】:似乎没有文档,我在***上找不到任何好的解决方案/指南。我的应... 查看详情

如何将值添加到从颤振到 Firestore 的数组中

】如何将值添加到从颤振到Firestore的数组中【英文标题】:Howtoaddvaluestoarrayfromfluttertofirestore【发布时间】:2019-02-2521:25:40【问题描述】:在Firestore中,我有一个包含数组类型字段的文档,我想从Flutter应用程序中添加日期时间值... 查看详情

如何使用 SQL 查询将值传递给具有空间/地理数据类型的存储过程

】如何使用SQL查询将值传递给具有空间/地理数据类型的存储过程【英文标题】:Howtopassvaluetostoredprocedurewithspatial/geographydatatypeusingSQLquery【发布时间】:2018-02-1821:41:03【问题描述】:我是一名学生,经过2小时搜索答案后,我希望... 查看详情

将值附加到 Pandas 系列

...时,我收到“无法连接非NDframe对象”。所以我不确定我应该如何进行。sql="select*fromtable"df=pd.read_sql(sql,conn)datovalue=df[\' 查看详情