|
|
1
1
我实际上使用了您在 Scala ARM library . 请记住,这是一个手工编码的解决方案的问题。 这里最大的问题是隐含的解决方案。编译器不会动态地为您生成包装器,您必须提前生成包装器,并确保它们是隐式作用域中的一个。这意味着(对于Scala-ARM)我们可以为任何资源提供“公共”包装器,当我们找不到合适的包装器时,就返回到基于反射的类型。这样做的好处是允许用户使用普通的隐式规则指定自己的包装器。 The Resource Type-trait 所有这些都是预定义的包装。 Monkey Patching, Duck Typing and Type Classes . 在任何情况下,您可能都不希望每次使用结构类型时都手工编码类型类。如果你真的想让编译器自动创建一个接口并为你施展魔法,它可能会变得一团糟。每次定义一个结构类型时,编译器都必须为它创建一个接口(可能是以太中的某个地方?)。我们现在需要为这些东西添加名称空间。而且,每次调用编译器都必须生成某种包装器实现类(同样还有名称空间问题)。最后,如果有两个具有相同结构类型的不同方法分别编译,那么我们只需分解所需的接口数。 并不是说这个障碍无法克服,但是如果你想用“直接”访问特定类型的结构类型,那么类型特征模式似乎是你今天的最佳选择。 |
|
|
2
7
a discussion 上 Scala-Inernals 邮件列表的问题是,当前编译方法保留的对象标识在包装值时丢失。 |
|
|
3
4
好好想想。考虑A级
在程序的某些地方,可能在单独编译的库中,使用这种结构类型:
除了全局分析之外,类A如何被必要的接口修饰,以允许它在指定那些遥远的结构类型的地方使用?
|