问题标签 [scala-2.10]
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.
scala - 从类型实例中查找隐式
是否可以将Type实例用作普通的 Scala 类型?例如,在以下代码段中,可以使用tpe找到pi吗?
恐怕没有一个简单的解决方案可以实现我的目标,而且我需要一种工厂来将tpe隐式翻译为[Double]。无论如何,我认为在 Scala 代码中集成反射类型可能非常强大,因此并不像看起来那么疯狂。
scala - 在 Scala 2.10 中通过反射查找类型参数?
使用类型标签,我可以看到某种类型的参数:
但我只是不太清楚如何以一般方式以编程方式将“Int”从那里取出。
(我现在已经在 REPL 中徘徊了一个小时,尝试对 Type 进行排列,看看我能从中获得什么......我得到了很多表明这是一个“列表”的东西,但祝你好运找到那个“Int”!而且我真的不想求助于解析 toString() 输出......)
Daniel Sobral 在这里有一个很好的(和往常一样)快速概述,其中他非常接近我正在寻找的东西,但(显然)只有当你碰巧知道,对于那个特定的类,一些特定的方法,其类型可以是审问:
但我希望有一些更通用的东西,它不涉及在声明的方法列表中查找并希望其中一个能够在某处捕获(并因此泄露)标签的当前类型信息。
如果 Scala 可以如此轻松地打印“List[Int]”,为什么在不借助字符串模式匹配的情况下,很难发现其中的“Int”部分?还是我只是错过了一些非常非常明显的东西?
呸...
scala - 使用 Scala 2.10 反射查找方法参数(和类型)?
我(从这里)学会了使用提取器来获取 Scala 元数据。我还注意到Universe.MethodTypeExtractor
:
用于创建和模式匹配语法的提取器类在
MethodType(params, respte)
这里,params 是方法的参数符号的潜在空列表,restpe 是方法的结果类型。
伟大的!听起来像我想要的!(?)
但是如何获得MethodType
?(为什么这是方法“类型”的提取器(方法是“类型”?)而不是方法“Def”或“Ref”??)
或者我完全是“找错了树”,可以这么说?
scala - 有什么方法可以从 Scala (2.10) 类型标记或符号中获取 Java 类?
看起来这让我很接近,但(a)不完全(见下文),并且(b)使用名称的字符串表示感觉就像一个黑客......
我是否错过了一些更直接的访问这些信息的方法?还是最好,如果我在某个时候还需要类信息,只是为了保留一组并行的 Java 类信息?(啊!)
scala - Scala 的“后缀操作”
我已经搜索了半个小时,仍然无法弄清楚。
在SIP:模块化语言特性中,有许多特性需要在 Scala 2.10 ( import language.feature
) 中明确“启用”。其中有postfixOps
,我在任何地方都找不到参考。这个功能到底允许什么?
scala - 针对 Scala 2.10 RC1 构建项目时出现 scala.reflect.internal.MissingRequirementError
我正在尝试针对 Scala 2.10.0 RC1 构建我们的旧项目。这是我这样做时遇到的错误:
此处的完整堆栈跟踪:https ://www.refheap.com/paste/6228 。
这个错误信息是什么意思?我错过了类路径上的一些库吗?
scala - 如何保存 TypeTag 然后稍后使用它将类型重新附加到 Any (Scala 2.10)
我正在尝试制作自定义异构列表和地图。尽管有使用 Manifest 的示例,但在 Scala 2.10 中它们已被弃用,我应该使用 TypeTags(或 Classtags)。在地图的情况下,我似乎可以使用(例如)元组 String->(TypeTag[ _ <: Any ], Any ) 保留 Any 与 Type 的绑定。
我的问题是如何从恢复的 TypeTag 和未定义的 T 中获取能够返回 TypeTag.tpe 的实例 - 在我拥有的代码中
//** How do I use saved typeTag to define T here?**
正如所写,get 方法中没有编译器错误,但 T 设置为 Nothing 并返回 Some(Nothing)。我希望我的注释行起作用:
case Some( x ) => // println( "Get 2*'pi'=" + x*2 )
在有编译器消息的地方,“值 * 不是 Nothing 的成员”。我意识到我可以写得更紧凑,但完成后,我可以将鼠标悬停在我的 IDE 中并一步一步地跟随。有一个相关的问题 - Scala:什么是 TypeTag 以及如何使用它? 但它似乎并没有走到“最后一英里” - 重新标记任何。
这个怎么做?
这是我到目前为止的代码:
scala - Scala:无样板的拉皮条
我广泛使用Pimp my Library模式,我想删除样板。例如,假设我有一些特质 PrettyPrint:
如果我想拉皮条 Int 和 Double,我需要编写如下代码:
在上面,我将其归类为样板:1)隐式转换的名称,2)“new”关键字,3)也许是参数名称“self”,4)也许是“implicit”关键字。我宁愿写这样的东西:
在上述代码的右侧,名称“self”被假定为转换参数。
关于如何做到这一点的想法?
一些注意事项:
1) 如有必要,我愿意使用 Scala 2.10。
2)据我所知,Scala 2.10 中的新隐式类还不够。这是因为每个隐式类只有一个隐式转换。换句话说,像下面这样的代码不会编译,因为 PrettyPrint 被声明了两次:
scala - Scala 2.10 TypeTag 用法
我正在挖掘新的 scala 反射 api,但无法弄清楚为什么以下代码段不能按预期工作。给定层次结构(尽量简化):
我期望方法f
来过滤给定类型的对象。所以下面的代码片段应该返回Seq[Foo]
它实际上返回Seq[Foo]
但其他消息未过滤,这听起来像一个错误。
问题。我是用TypeTag
错了还是新反射api的缺陷?
PS0。试过Scala 2.10.0-RC1
和2.10.0-RC2
PS1。解决方法是替换TypeTag
为,因此序列上Manifest
的以下代码将按预期返回。collect
List(Foo(1))
更新:与新Scala 2.10.0-RC2
版本相同。