Scala重载方法有什么问题
发布时间:2020-12-16 18:18:50 所属栏目:安全 来源:网络整理
导读:下面的代码会在工作表中引发编译错误 def joiner(strings:List[String],separator:String):String = strings.mkString(separator) def joiner(strings:List[String]):String = joiner(strings," ") joiner(List("sdsdfsd","sdsd")) 错误: Error:(12,120) to
下面的代码会在工作表中引发编译错误
def joiner(strings:List[String],separator:String):String = strings.mkString(separator) def joiner(strings:List[String]):String = joiner(strings," ") joiner(List("sdsdfsd","sdsd")) 错误: Error:(12,120) too many arguments for method joiner: (strings: List[String])String println("joiner: " + MacroPrinter211.printGeneric({import inst$A$A._ ;def joiner(strings:List[String]):String = joiner(strings," ") }).replace("inst$A$A.","")) ^ 我有重载的木匠方法.为什么它会给错误提供太多的论据? 解决方法
如果将代码放在类或对象中,则代码可以正常工作,因为类或对象可以在scala中具有重载方法.
但是如果你在REPL中编写代码 – 这些不是方法,而是函数.功能不能超载.所以你应该把它们放在一个对象或类中,或者使用@StuartMcvean建议的默认参数 更新为@Travis正确地纠正了我的回答我错了这里发生的事情的原因.看起来像REPL(和工作表)也没有正确处理它,因为它处理方法的机制. 据我所知(我希望这次是正确的),这是因为REPL需要将一个方法更改为另一个方法,因为REPL允许您定义具有不兼容签名的方法,替换旧方法(例如,不同的方法)只有返回值) 如果您尝试使用以下代码粘贴代码:粘贴(不确定工作表的等效内容) – 它会正确处理 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |