迁移至Scala 3后遇纯表达式语句位置无操作警告的技术求助
解决Scala 3中"A pure expression does nothing in statement position"警告
问题根源
你的txt变量对应的if表达式缺少了最终的else分支:当texto既不为空/空字符串,长度又≤3000时,没有指定返回值。Scala 2会默认隐式返回Unit,但Scala 3对纯表达式的语句位置检查更严格,会触发这个警告——因为这个分支下的纯表达式(无副作用)没有被有效使用。
修复方案
补全else分支,返回原texto即可,这才符合逻辑的完整意图:
val txt = if (texto == null || texto.isEmpty) "_" else if (texto.length > 3000) texto.substring(0, 3000) else texto // 补全该分支,覆盖正常长度的文本场景
验证说明
补全后,if表达式在所有分支都有明确的字符串类型返回值,变量txt的类型会被正确推断为String,Scala 3编译器就不会再触发该警告。你之前尝试加括号或调整缩进无效,是因为核心问题是分支逻辑不完整,而非语法格式问题。
内容的提问来源于stack exchange,提问作者david.perez
相关产品推荐
相关产品推荐

