问题标签 [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.

0 投票
1 回答
404 浏览

scala - 从类型实例中查找隐式

是否可以将Type实例用作普通的 Scala 类型?例如,在以下代码段中,可以使用tpe找到pi吗?

恐怕没有一个简单的解决方案可以实现我的目标,而且我需要一种工厂来将tpe隐式翻译为[Double]。无论如何,我认为在 Scala 代码中集成反射类型可能非常强大,因此并不像看起来那么疯狂。

0 投票
2 回答
5385 浏览

scala - 在 Scala 2.10 中通过反射查找类型参数?

使用类型标签,我可以看到某种类型的参数:

但我只是不太清楚如何以一般方式以编程方式将“Int”从那里取出。

(我现在已经在 REPL 中徘徊了一个小时,尝试对 Type 进行排列,看看我能从中获得什么......我得到了很多表明这是一个“列表”的东西,但祝你好运找到那个“Int”!而且我真的不想求助于解析 toString() 输出......)

Daniel Sobral 在这里有一个很好的(和往常一样)快速概述,其中他非常接近我正在寻找的东西,但(显然)只有当你碰巧知道,对于那个特定的类,一些特定的方法,其类型可以是审问:

但我希望有一些更通用的东西,它不涉及在声明的方法列表中查找并希望其中一个能够在某处捕获(并因此泄露)标签的当前类型信息。

如果 Scala 可以如此轻松地打印“List[Int]”,为什么在不借助字符串模式匹配的情况下,很难发现其中的“Int”部分?还是我只是错过了一些非常非常明显的东西?

呸...

0 投票
1 回答
2268 浏览

scala - 使用 Scala 2.10 反射查找方法参数(和类型)?

我(从这里)学会了使用提取器来获取 Scala 元数据。我还注意到Universe.MethodTypeExtractor

用于创建和模式匹配语法的提取器类在 MethodType(params, respte)这里,params 是方法的参数符号的潜在空列表,restpe 是方法的结果类型。

伟大的!听起来像我想要的!(?)

但是如何获得MethodType?(为什么这是方法“类型”的提取器(方法是“类型”?)而不是方法“Def”或“Ref”??)

或者我完全是“找错了树”,可以这么说?

0 投票
2 回答
7456 浏览

scala - 有什么方法可以从 Scala (2.10) 类型标记或符号中获取 Java 类?

看起来这让我很接近,但(a)不完全(见下文),并且(b)使用名称的字符串表示感觉就像一个黑客......

我是否错过了一些更直接的访问这些信息的方法?还是最好,如果我在某个时候还需要类信息,只是为了保留一组并行的 Java 类信息?(啊!)

0 投票
1 回答
1191 浏览

scala - 在 2.10 中替代 Scala REPL breakIf

我在这里阅读了有关在 REPL 代码中使用该breakIf方法进行交互式调试的信息,但后来我发现这篇文章这么说,breakbreakIfILoopScala 2.10 中删除。不幸的是,该帖子没有解释为什么删除代码。

我假设这些功能已被删除,因为有更好的方法来做到这一点。如果是这样的话,有人可以启发我吗?

0 投票
3 回答
35603 浏览

scala - Scala 的“后缀操作”

我已经搜索了半个小时,仍然无法弄清楚。

SIP:模块化语言特性中,有许多特性需要在 Scala 2.10 ( import language.feature) 中明确“启用”。其中有postfixOps,我在任何地方都找不到参考。这个功能到底允许什么?

0 投票
0 回答
2102 浏览

scala - 针对 Scala 2.10 RC1 构建项目时出现 scala.reflect.internal.MissingRequirementError

我正在尝试针对 Scala 2.10.0 RC1 构建我们的旧项目。这是我这样做时遇到的错误:

此处的完整堆栈跟踪:https ://www.refheap.com/paste/6228 。

这个错误信息是什么意思?我错过了类路径上的一些库吗?

0 投票
2 回答
1285 浏览

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 以及如何使用它? 但它似乎并没有走到“最后一英里” - 重新标记任何。

这个怎么做?

这是我到目前为止的代码:

0 投票
4 回答
1005 浏览

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 被声明了两次:

0 投票
4 回答
4141 浏览

scala - Scala 2.10 TypeTag 用法

我正在挖掘新的 scala 反射 api,但无法弄清楚为什么以下代码段不能按预期工作。给定层次结构(尽量简化):

我期望方法f来过滤给定类型的对象。所以下面的代码片段应该返回Seq[Foo]

它实际上返回Seq[Foo]但其他消息未过滤,这听起来像一个错误。

问题。我是用TypeTag错了还是新反射api的缺陷?

PS0。试过Scala 2.10.0-RC12.10.0-RC2

PS1。解决方法是替换TypeTag为,因此序列上Manifest的以下代码将按预期返回。collectList(Foo(1))

更新:与新Scala 2.10.0-RC2版本相同。