Solidity中使用switch-case语句报“Expected primary expression”错误求助
Solidity中switch-case报“Expected primary expression”错误的解决方法
你的错误源于Solidity的switch-case语法不符合规范,0.8.11版本的Solidity要求case和default关键字后必须添加冒号:,同时代码结构需要调整。
修正后的代码示例
function foo(uint8 version) public { switch version { case 1: { // 编写你的业务逻辑 break; // 可选,避免fall-through到后续case } default: { revert(); } } }
如果case内只有单条语句,也可以省略大括号:
function foo(uint8 version) public { switch version case 1: // 单条逻辑语句 break; default: revert(); }
关键说明
- 语法强制要求:Solidity中
case和default必须以冒号结尾,缺少冒号会直接触发你遇到的“Expected primary expression”错误。 - 代码块包裹:当case内包含多条语句时,必须用
{}包裹代码块;单条语句可省略大括号。 - Fall-through行为:Solidity的switch默认支持fall-through(执行完当前case后会继续执行后续case代码),若不需要该行为,需在case代码末尾添加
break语句终止执行。
内容的提问来源于stack exchange,提问作者reeslabree
相关产品推荐
相关产品推荐

