Array.length 作为函数的键(稳固性)

Array.length as key for a function (solidity)

对于新手问题,我深表歉意,但我正在尝试学习编码,没有其他方法可以找到解决方案。我正在寻找一种方法来将唯一键添加到函数的结果中,这样我就可以在需要时引用同一函数的其他迭代。

请在下面找到代码。当我 运行 代码保持原样时,它一直要求用户输入一个值,而我正在寻找代码而不是询问用户而是使用从 gettid() 函数产生的值.

因为我显然是编码新手,所以我也乐于接受关于改进密钥标识符的建议(它需要是唯一的,虽然我的方法很简单,但它应该产生唯一的值)。

// SPDX 许可证标识符:MIT

pragma solidity ^0.8.0;

合同示例{

struct Input{
    uint256 gettid;
    string title1;
    string title2;
    string title3;
    string title4;
    string title5;
}
Input[] public inputsArray;

function gettid() public view returns(uint256) {
return inputsArray.length;
}

function addinput(
    uint256 _gettid,
    string memory _title1,
    string memory _title2,
    string memory _title3,
    string memory _title4,
    string memory _title5
    
) public {
    inputsArray.push(Thread(_gettid, _title1, _title2, _title3, _title4, _title5));
}}

您可以调用 gettid() 函数并将 return 值存储在临时 uint 中,然后将临时 uint 推送到数组。像这样:

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

contract example{

struct Input{
    uint256 gettid;
    string title1;
    string title2;
    string title3;
    string title4;
    string title5;
}
Input[] public inputsArray;

function gettid() public view returns(uint256) {
return inputsArray.length;
}

function addinput(
    string memory _title1,
    string memory _title2,
    string memory _title3,
    string memory _title4,
    string memory _title5
    
) public {
    uint256 _nextId = gettid();
    inputsArray.push(Thread(_nextId, _title1, _title2, _title3, _title4, _title5));
}}