#solidity
Вопрос:
Я хочу объявить массив для хранения моих строк следующим образом.
bytes32[3] verifiedResu<
verifiedResult = ["verified successfully", "verified failed", "not clear"];
Ошибка показывает, что
ParserError: Expected identifier but got '=' --> contracts/1_Storage.sol:23:20: | 23 | verifiedResult = ["verified_successfully", "verified_failed", "not clear"] |^
что я должен сделать, чтобы это исправить? Есть ли лучший способ объявить статический строковый массив в солидности?
Ответ №1:
Вы можете использовать string
ключевое слово. Или, в вашем случае, массив строк фиксированного размера (3).
pragma solidity ^0.8.4;
contract MyContract {
// string in storage
string[3] verifiedResult = ["verified successfully", "verified failed", "not clear"];
function foo() external {
// string in memory
string[3] memory anotherStringArray = ["verified successfully", "verified failed", "not clear"];
}
}
Кроме того, ваша копия выглядит так, как будто вы можете использовать перечисление.
pragma solidity ^0.8.4;
contract MyContract {
enum VerifiedResult {VerifiedSuccessfully, VerifiedFailed, NotClear}
VerifiedResult resu<
function foo() external {
result = VerifiedResult.NotClear; // stores `NotClear` to the `result` property
}
}
Комментарии:
1. Спасибо за ваш ответ,
enum
это очень хорошее мнение. Но я хочу показать строку на экране, что означает, что мне нужно вернуть строку. могу ли я вернуть статическую строку точно так же, как этоreturn verfiedResult[0]
?2. Да, вы можете развернуть первый фрагмент и вернуть строку следующим образом:
function foo() external returns (string memory) { return verifiedResult[0]; }