Scala构建报错‘Public method must have explicit type’的解决咨询
解决Scala中"Public method must have explicit type"报错
问题原因:Scala编译器要求公共方法必须显式声明返回类型——private方法可以依赖自动类型推断,但public方法属于类/特质的对外接口,必须明确返回类型以保证接口稳定性和可读性。
解决步骤:
- 确定
primaryKey方法的返回类型:可以通过IDE的类型提示(比如IntelliJ鼠标悬停在primaryKey上查看),或者借助编译报错信息(先尝试添加占位符类型,编译器会给出预期的具体类型)。 - 在方法定义中补充返回类型,格式为
def 方法名: 返回类型 = 实现代码。
- 确定
示例修改:
假设primaryKey返回的是PrimaryKey类型(比如Slick框架中的常见情况),修改后的代码如下:
def pk: PrimaryKey = primaryKey("passive_prompts_primary_key", (uuid, promptType, trigger))
- 小技巧:如果不确定返回类型,可以先写
def pk: _ = ...,编译时编译器会抛出类似missing parameter type的错误,并提示预期的具体类型,直接替换成该类型即可。
内容的提问来源于stack exchange,提问作者Ahmed Wasim
相关产品推荐
相关产品推荐

