为什么我不能在Scala中的this.apply(_)中省略“apply”?
发布时间:2020-12-16 19:11:04 所属栏目:安全 来源:网络整理
导读:请注意以下代码 trait Example { type O def apply(o: O) def f(o: O) = this.apply(o)} 在Scala编译好.我希望我可以照常申请,写def f(o:O)= this(o).但是,这会产生令人兴奋的错误消息 type mismatch; found : o.type (with underlying type Example.this.O
请注意以下代码
trait Example { type O def apply(o: O) def f(o: O) = this.apply(o) } 在Scala编译好.我希望我可以照常申请,写def f(o:O)= this(o).但是,这会产生令人兴奋的错误消息 type mismatch; found : o.type (with underlying type Example.this.O) required: _31.O where val _31: Example possible cause: missing arguments for method or constructor 任何人都可以向我解释发生了什么事吗? 解决方法
接受的答案是不正确的.你可以从这个编译好的事实推断出实际问题是什么:
trait Example { def apply(o: String): String = o def f(o: String) = this(o) } this(…)仅表示当调用站点是辅助构造函数时对构造函数的调用.正如您想象的那样,剩余的时间是应用调用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |