- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我有一个@specialized 类时,我会保留有关我的类型是什么原语的信息。有没有一种快速的方法来获取ClassTag[T]
,例如创建数组?
这不会编译,因为没有可用的 ClassTag[T]
class Foo[@specialized T] {
def bar: Array[T] = new Array[T]
}
这可行,但我想避免传递 ClassTag
class Foo[@specialized T: ClassTag] {
def bar: Array[T] = new Array[T]
}
这有效,但是很慢:
class Foo[@specialized T] {
def bar: Array[T] = new Array[T]
implicit def classTag: ClassTag[T] = {
val name = getClass.getName
if(name.endsWith("$I$sp") ClassTag.Int
else if(name.endsWith("$L$sp") ClassTag.Long
else ??? // you get the idea
}
}
最佳答案
特化发生在 typer 的 ClassTags 的具体化之后,所以有谷仓门的问题。
另一个问题是专门化会创建双重定义,因此以明显的方式手动专门化方法并非易事。
这里尝试混入提供类标签的专用方法。
专用 f
调用专用 ct
,它在特征中被覆盖。
我不知道 ct
的虚拟 arg 是使其特化所必需的;也许 ClassTag[A]
结果类型不够。
$ scalam
Welcome to Scala 2.12.0-M3 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_60).
Type in expressions for evaluation. Or try :help.
scala> import reflect.ClassTag
import reflect.ClassTag
scala> class CT[@specialized(Int) A] {
| def ct(a: A): ClassTag[A] = ???
| def f: Array[A] = ct(null.asInstanceOf[A]).newArray(1)
| }
defined class CT
scala> trait CTS { def ct$mcI$sp(i: Int): ClassTag[Int] = reflect.classTag[Int] }
defined trait CTS
scala> (new CT[Int] with CTS).f
res0: Array[Int] = Array(0)
显示专门的调用:
scala> :javap -c -
Compiled from "<console>"
[snip]
16: invokevirtual #32 // Method $line16/$read$$iw$$iw$$anon$1.f$mcI$sp:()[I
19: putfield #24 // Field res0:[I
关于scala - 从专业类中获取 ClassTag,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34276512/
已关闭。此问题旨在寻求有关书籍、工具、软件库等的建议。不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以
我需要创建一个 API,允许我客户的开发人员使用将作为库发布的专有 C 模块(想想 .lib 或 .so - - 不是来源)。 我想让 header 尽可能对开发人员友好(所以我不需要这样做),遵循最
所以我想制作一个加载了全部功能的免费应用程序。在应用程序检测到许可的专业版 key 之前,专业版功能将被禁用。当然,我想让专业 key 使用 LVL 检查它的许可证。虽然到目前为止我知道如何做正确的事
我想就最小/样板专业 PHP 团队开发环境获得普遍共识。我无法在网络上的任何地方找到此信息。在开源世界中,有如此多的选择和如此多的做事方式,但我还没有找到任何适用于基础设施/管道方面的通用最佳实践。
希望我的问题不会太宽泛。因此,我尝试构建我的问题,以免对 this question 的问题得到太相似的答案。 . 目前我已经在 Linode 上部署了我的 rails 应用程序。服务很好,价格合理。
只是一般查询。我试图研究用于专业 360 开发的工具和环境,但 NDA 未涵盖的可用工具和环境并不多。 (请注意,我对 XNA 开发不感兴趣。) 问:PRO 开发的首选/最常见的开发环境是什么?是 V
我收到了 Rob Bovey 写的《Professional Excel Development》一书,它让我大开眼界。 我正在通过错误处理重新调整我的代码。然而,还有很多我不明白的地方。我特别需要知
IDE:Delphi 6 Professional。 我们有大项目。 我无法使用项目组来构建所有这些,因为我在执行此操作时遇到了 OM 错误和奇怪的文件错误。 我的想法是使用 DCC32.exe之前我
Microsoft网站具有冲突的信息: http://msdn.microsoft.com/en-us/library/ms182372.aspx ...使用Visual Studio Premium
所以我刚刚开始从头开始构建一个网站。我以前从未这样做过。我正在服务器上工作。 1。问题: 在我的文件index.php 中,我有以下内容: 效果很好,显示了 Start.html 的内容。在 htm
例如,在javascript中:1 var name = ""; alert("The name is: " + name); 或者2 alert("The name is: "); 在 ht
我是一名优秀的程序员,十分优秀!