问题标签 [reification]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
519 浏览

generics - Scala 的清单有哪些限制?

Manifest由于 JVM 缺乏具体化的泛型,Scala 的s 是一种解决类型擦除问题的方法。

它们在其他几个问题中进行了讨论;这里有一些:

其中一条评论提到“此功能是实验性的,在某些情况下它不起作用。不过,它可以走很长的路。” (丹尼尔·索布拉尔)

清单方法失败的情况有哪些,为什么?

0 投票
1 回答
821 浏览

scala - 对于 Scala,类型擦除有什么好处吗?

我已经听到很多关于不同的 JVM 语言的消息,它们仍然处于蒸汽软件模式,它们建议以某种方式实现具体化。我有这个唠叨的半记得(或完全想象,不知道是哪个)认为我在某处读到 Scala 以某种方式利用 JVM 的类型擦除来完成它无法通过具体化来完成的事情。这对我来说真的没有意义,因为 Scala 是在 CLR 和 JVM 上实现的,所以如果具体化导致某种限制,它将出现在 CLR 实现中(除非 CLR 上的 Scala 只是忽略具体化) .

那么,对于 Scala 的类型擦除是否有好的一面,或者具体化是一件绝对的好事?

0 投票
4 回答
5359 浏览

javascript - Javascript 中缺少捕获方法并执行一些逻辑?

在 Ruby 中,您可以捕获对缺少的方法的调用并动态定义它。

我想在 JavaScript 中完成的是拥有一个没有方法的对象。我希望将缺少的方法转换为对 emit() 的调用:

我认为最好捕获缺少的方法错误并运行 emit(methodName) 而不是在运行时定义所有方法(来自固定列表)。这样,如果一个对象有成百上千个事件,我们就不会有性能开销。

做这个的最好方式是什么?

更新:这是一个 API 设计,所以我宁愿远离:

我想知道如何在幕后完成此操作,以便用户可以照常使用方法。

0 投票
2 回答
1600 浏览

scala - 在 Scala 中重载通用事件处理程序

如果我定义以下通用事件处理程序

事件类型是这样的

然后我如何创建一个为这些事件中的每一个实现事件处理程序的类?我试过:

但是 Scala 抱怨一个 trait 不能被继承两次。

我发现这个答案暗示了一个解决方案,但它似乎需要多个类(每个处理程序一个)。这真的是唯一的方法,还是有一些其他的 Scala 构造我可以用来使单个类实现多个通用事件处理程序(即使用案例类、清单或其他一些奇特的构造)?

0 投票
1 回答
405 浏览

reflection - 引用、物化与反思的关系

我最近对引用、具体化和反思感到困惑。有人可以对他们的关系和差异(如果有的话)提供一个很好的解释吗?

0 投票
1 回答
75028 浏览

scala - 什么是 TypeTag 以及如何使用它?

我所知道的关于 TypeTags 的只是它们以某种方式取代了 Manifests。Internet 上的信息很少,无法让我很好地了解该主题。

因此,如果有人在 TypeTags 上分享一些有用材料的链接,包括示例和流行用例,我会很高兴。也欢迎详细的回答和解释。

0 投票
2 回答
149 浏览

scala - reify宏扩展期间的StackOverflowError

我有一个使用 reify 的简单测试宏。它会在宏扩展期间导致 StackOverflowError。

为什么会这样?可以以某种方式避免吗?

编辑:这就是 M6 发生的事情。我刚刚用 M7 试了一下,现在它说

实现限制:无法具体化类型 Object{def (): O.type} (ClassInfoType)

所以这回答了为什么的问题,但问题仍然是是否有办法解决这个问题。

0 投票
0 回答
170 浏览

scala - scala 表达式的具体化在 v2.9 中有效吗?

我在玩 scala 提升,我偶然发现 Scala 似乎对 lambda 表达式有某种隐式支持。

ast 将在右侧具有 lambda 的 AST。

它似乎不适用于文字,所以:

不起作用。

但这确实:

我似乎无法找到它的文档。似乎没有任何隐式转换处于活动状态。这是如何运作的?

0 投票
1 回答
276 浏览

c# - 非泛型类上的 C# 泛型方法归结为什么?

如果我有这样的课程:-

我知道在这个例子中没有必要使用 T 因为所有类型都有 ToString() 等等 - 这只是一个人为的例子。我更感兴趣的是引擎盖下发生的以下情况:-

我广泛地(认为!)我理解具体化,即如果你制作不同类型的泛型类,例如

等等然后在编译时(或运行时?)我们最终得到三种实际的具体类型,一种用于指定的每个通用参数。这是否同样适用于我的第一个示例中的方法调用,即我们是否仍然有一个类 Foo 但三个具体化的 Bar 方法,一个用于 String、Int32 和 Employee?

0 投票
1 回答
146 浏览

scala - 关于 joinLeft of Either 的类型约束和具体化

joinLeft定义为:

  • 有了已知的Aand B,我们需要一个implicit ev: A1 <:< Either[C, B1]that
    1. 满足约束A1 >: A, B1 >: B
    2. 物化A1 <: Either[C, B1]

  • 为此,我们需要隐式 conforms[A1]conforms[Either[C, B1]]

如果直到现在我仍然是正确的,那么在我看来,A1只要B1它们超出下限AB. 所以我想知道 scala 如何给我们A1Either[C, B1](以及它们是什么),以便我们隐含conforms以促进<:<完成断言的工作A1 <: Either[C, B1]

PS
我认为这个问题与我的另一个问题有点相关“ joinLeft [A1 >: A, B1 >: B, C]... 为什么类型约束 A1 >: A and B1>: B 是必要的? ”。如果有人也可以看看它,我将不胜感激。