繁体   English   中英

如何在 Solidity 的结构中获取用户的输入?

[英]How to take input from user in structure in Solidity?

pragma solidity >=0.7.0<0.9.0;
contract emp
{
    struct Details
    {
        string name;
        uint id;
        string post;
    }
    Details dtl;

    function setDetails(string a, uint b, string c) public
    {
        dtl=Details('a' , b , 'c');
    }
    function output() public view returns (string memory,uint,string memory)
    {
        return (dtl.name, dtl.id, dtl.post);
    }
}

不知道为什么会显示此错误,请告诉我哪里出错了。

从坚固性:

TypeError: Data location must be "memory" or "calldata" for parameter in function, but none was given.
  --> contracts/structure.sol:12:25:
   |
12 |     function setDetails(string a, uint b, string c) public**
                             ~~~~~~~~          ~~~~~~~~

错误消息告诉您setDetails() function 的输入参数的数据位置必须是“memory”或“calldata”,但均未指定。

为了解决这个问题,您需要通过在变量类型前添加 memory 关键字来指定输入参数的数据位置。 例如:

function setDetails(string memory a, uint b, string memory c) public

另一件事你做错了,在这一行dtl=Details('a', b, 'c'); 您使用单引号 ('') 将值分配给不正确的变量。 您应该使用双引号 ("") 将值分配给变量。 给变量赋值的正确方法是这样的:

dtl=Details(a , b , c);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM