首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >smart契约和实验性ABIEncoderV2中的结构值返回

smart契约和实验性ABIEncoderV2中的结构值返回
EN

Ethereum用户
提问于 2019-06-20 14:06:15
回答 2查看 810关注 0票数 4
  1. 我使用映射存储和返回struct值。pragma稳健性>=0.5.0 <0.7.0;实用化实验ABIEncoderV2;契约管理{storePolicy{ string PolicyID;}映射(地址=>映射( string => Policy))私有策略;函数storePolicy(address insuranceHolder,string memory _PolicyID)公共{策略insuranceHolder.PolicyID= _PolicyID;} function (address insuranceHolder,string memory _PolicyID)公共视图返回(策略内存){返回策略insuranceHolder;}}

我得到了这样一个返回值。0: tuple(string):_PolicyID我不想这个0: tuple(string):我只想要_PolicyID,怎么做谁都能帮我。

  1. 我收到了一个关于使用语用实验ABIEncoderV2的警告;警告:实验特性是打开的。不要在实时部署中使用实验特性。编译器会发出警告。这意味着我只应该把它用于发展。这对我来说毫无意义。
EN

回答 2

Ethereum用户

回答已采纳

发布于 2019-06-20 16:16:11

pragma坚实度>=0.5.0 <0.7.0;

馊主意。您应该针对特定的编译器--与预期的目标相匹配。这将减少混乱。

结构策略{ string PolicyID;}映射(地址=>映射(字符串=>策略))私有策略;

我觉得这个结构不合适。

用户地址=> policyId => Policy ??.,这样用户就可以拥有多个策略?

我正在存储并返回struct值.我只想要_PolicyID

那么您应该只返回PolicyID

我还注意到您正在传递一个策略结构,这似乎很奇怪,因为策略应该在映射中,存储中。

编译器会发出警告。这意味着我只应该把它用于发展。

警告的意思是,你可能不需要它。

您有一个设置策略和获取策略的函数。该结构除了ID (该ID是多余的)外,没有任何关于策略的信息。我来告诉你为什么。

如果您“获得”策略ID x,那么您已经知道策略ID。没有必要将其存储在结构中。

看看这个解释程序,学习如何为您的策略处理创建、检索、更新和删除。我建议你先抛开每个人一人以上的顾虑。掌握基本结构,然后将注意力转向更高级的结构。https://medium.com/robhitchens/solidity-crud-part-1-824ffa69509a

您的功能应该如下所示:

代码语言:javascript
复制
function set(policyID, arguments ...) ...

function get(policyID) public view returns(arguments) ...

希望能帮上忙。

票数 3
EN

Ethereum用户

发布于 2019-06-21 10:25:23

如果您想要使用web3与智能契约进行交互,请执行以下操作。在那里,你将被期望地提出你的问题。

创建一个实例:

代码语言:javascript
复制
   let app ; 
     Manage.deployed().then(function(instance) {
      app = instance ;
      app.getPolicy(arg1,arg2).then(value => {
      console.log('Get policy response ', value); // your expected output is here 
     })
   })
票数 0
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/72046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档