Мои извинения за вопрос новичка, однако я пытаюсь изучить кодирование и не имею других способов найти решение. Я ищу способ добавить уникальный ключ к результату функции, чтобы я мог иметь другие итерации той же функции, чтобы ссылаться на нее, если это необходимо.
Пожалуйста, найдите код ниже. Когда я запускаю код в его нынешнем виде, он продолжает запрашивать значение, которое будет введено пользователем, в то время как я ищу код, чтобы не спрашивать пользователя, а использовать значение, полученное из функции gettid().
Поскольку я явно очень новичок в кодировании, поэтому я также открыт для предложений по улучшению идентификатора ключа (он должен быть уникальным, и хотя мой подход прост, он должен создавать уникальные значения).
// SPDX-идентификатор лицензии: MIT
прочность прагмы ^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() и сохранить возвращаемое значение во временном 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));
}}