Scala中能否将方法命名为+I?命名规范咨询
能不能在Scala中使用
+I作为方法名? 很遗憾,你没法直接用+I作为Scala方法的名字,这正是编译器抛出= expected but identifier found错误的核心原因。
Scala的标识符命名规则有明确限制:
- 如果标识符以操作符字符(比如
+、-、*、/这类符号)开头,那么整个标识符必须全部由操作符字符组成,不能混入字母、数字或者下划线(下划线属于字母数字类字符范畴)。 - 反过来,如果标识符以字母、数字或者下划线开头,后面可以混合操作符字符——这也是你用
I_+能正常运行的原因,它以下划线开头,后续搭配操作符完全符合语法要求。
所以+I这种“操作符开头+字母”的组合完全不合法,编译器根本无法识别它是一个有效的方法名。
替代便捷方案
如果你希望方法调用起来尽量简洁,可以参考这些思路:
- 继续使用
I_+,如果是类成员方法,调用时可以用中缀语法,比如myInstance I_+ (1,2),可读性和便捷性都不错。 - 改用全操作符组成的名字,比如
+!或+~,这类命名符合语法,但缺点是没法直观体现I的含义。 - 调整方法设计,把
I的逻辑整合到参数里,比如定义带标记参数的操作符方法:
class MyCalculator { def +(num: Int, mode: String): Int = mode match { case "I" => num + 1 // 这里写你的业务逻辑 case _ => num } } // 调用示例:new MyCalculator + (5, "I")
内容的提问来源于stack exchange,提问作者D.L.




