gpt4 book ai didi

scala - 对此的隐式转换没有启动

转载 作者:行者123 更新时间:2023-12-04 15:21:50 24 4
gpt4 key购买 nike

为什么只有在明确声明的情况下才会进行隐式转换?

implicit class Foo(b: Bar) {
def foo = 1
}

class Bag extends Bar {
val bag = foo // does not work
val bag = this.foo // does work
}

最佳答案

当您说val bag = foo时,编译器将在名为foo的范围内查找值。如果找不到,就会抛出错误。

为了触发隐式,您需要尝试调用没有该方法的对象的 foo 方法。在本例中,this 就是该对象。只有这样,编译器才会将 this 隐式转换为 Foo 以便调用 foo

编译器不会自动尝试将 foo 扩展为 this.foo。如果 foo 不应该是类成员怎么办?如果是局部变量怎么办?它怎么可能知道意图是什么?

关于scala - 对此的隐式转换没有启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32361239/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com