问题标签 [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 - Scala 2.10 中的字符串插值 - 如何插入字符串变量?
从 Scala 2.10 开始,字符串插值在 Scala 中可用
这是基本示例
我想知道是否有办法进行动态插值,例如以下(不编译,仅用于说明目的)
有没有办法“动态”评估这样的字符串?(或者它本质上是错误的/不可能的)
究竟是
s
什么?这不是方法定义(显然它是一个方法StringContext
),而不是一个对象(如果是,它会抛出一个不同的编译错误,而不是我认为的未找到)
scala - 这是带有反斜杠的多行字符串中的 Scala 2.10 字符串插值中的错误吗?
使用 Scala 2.10.0-RC1,我尝试在 Windows 文件路径中使用字符串插值,例如:
并得到了一个例外
没有多行字符串文字 ( """
) 它工作得很好 val path = s"""c:\foo\bar\$fileName.csv""" val path = s"c:\foo\bar\${fileName}.csv " //> 路径:字符串 = c:\foo\bar\myFile.csv
进一步测试以重现该问题:
这个异常是由于错误吗?还是我在进行字符串插值时根本不允许在 $ 符号之前使用反斜杠?
这是更多的堆栈跟踪:
更新:
现在标记为 Scala 2.10.1-RC1 已修复
https://issues.scala-lang.org/browse/SI-6631
顺便说一句,即使在修复之后,进行插值和避免转义的正确方法是使用raw
:
例如
scala - Scala中的“应启用结构类型成员方法的反射访问......”警告是什么意思?
切换到 Scala 2.10 后,我收到大量警告:
结构类型成员方法的反射访问...应该通过使隐式值 language.reflectiveCalls 可见来启用
这是什么意思?
scala - 宏是否可以在 Scala 中进行自然链接比较?
Scala 不像 Python 那样提供链式比较:
具有新宏功能的 Scala 2.10 是否会让程序员编写一个添加此功能的库?或者这超出了Scala 宏的范围?
宏似乎是实现此类语法糖的正确选择,因为它们不会使解析器/编译器复杂化。
scala - 在 heroku 上部署 Play2.1-RC1 会出错
将基于 Play2.1-RC1 的应用程序部署到 Heroku 时遇到此错误
build.properties
plugins.sbt 文件
Build.scala
导入 sbt._ 导入 PlayProject._
更新
将 JAVA_OPTS 和 SBT_OPTS 从更改
-Xmx384m -Xss512k -XX:+UseCompressedOops
为
-Xmx1024m -Xss512k -XX:+UseCompressedOops
但再次出现同样的错误。
scala - scala宏:将函数添加到类
我是 scala 宏的新手,我正在使用 scala 2.10.0-RC3。
我想编写一个将函数添加到类的宏。使用示例:
在以下情况下我需要这个。我的第一次尝试没有使用宏但没有用,因为我不能两次继承相同的特征。
使用宏解决方案我可以写
有没有办法用 scala 宏来做到这一点?还是有另一种方法可以实现这一目标?
scala - 使用 resetLocalAttrs 时出现奇怪的错误
我编写了一个宏,它使用(宏)上下文的 resetLocalAttrs 方法。宏展开后,我收到一个奇怪的错误,我无法弄清楚发生了什么。首先,我将介绍问题。我们有两个原语:状态(我将表示为一个简单的 Int)和动作。状态代表系统的当前状态,而动作负责修改状态。动作可以是原子的或由原子动作组成。
从代码中可以看出,AndNext接收一个部分函数,因为它可以根据当时的当前状态启动一个或另一个动作。组合动作内部的原子动作可能需要序列中前一个原子动作留下的前一个状态,所以我需要用Int => Action保护它。
让我们测试代码,使用一个虚拟函数强制测试需要一个Int => Action参数:
没关系,但是我正在研究 DSL,编写所有那些冗余的隐式状态太冗长了,必须隐藏它们才能使这段代码适合 DSL 使用。试图达到以下可爱的调用......
我已经实现了一个宏,它将动作转换为受保护的动作(记住 Int => Action):
(*) 注意宏声明中的隐式,它转换视图中的方法。
前者(和评论) reify 工作正常,但由于一些限制,我必须使用调用resetLocalAttrs()的 reify (你不想知道,这个问题变得太长:)。这个 reify 失败并出现一个奇怪的错误:
我在哪里尝试实例化 Any?为什么重置对 AST 的影响如此之大?我已经使用了很多次,它很好地重置了类型和符号。
找到问题的更好方法是什么?我一直在使用 showRaw 启用类型和ids标志,这变得相当困难。
scala - 检查 Scala 宏中的可变参数类型归属
假设我有这个宏:
这适用于“真实”可变参数:
但是归于可变参数类型的序列的行为让我感到困惑(在 Scala 2.10.0-RC3 中):
并表明推断类型没有任何可疑之处:
我本来预计会出现编译时错误,这就是我想要的。我在编写的大多数宏中都使用了以下方法:
这在编译时解决了问题:
不过,这对我来说就像是一种 hack——它混合了一种验证(检查参数是否为文字)和另一种验证(确认我们确实有可变参数)。我还可以想象我不需要参数是文字的情况(或者我希望它们的类型是通用的)。
我知道我可以做到以下几点:
但这是处理非常简单(我认为这是广泛必要的)参数验证的一种丑陋方式。我在这里缺少一个技巧吗?我可以确保foo(1 :: Nil: _*)
在我的第一个示例中给出编译时错误的最简单方法是什么?
scala - Scala 宏的静态返回类型
所以我有这个宏:
我已经说过三遍我想foo
返回 a Foo
,但我可以执行以下操作(在 2.10.0-RC3 中):
如果我删除任何一个上的类型参数,也会发生同样的事情c.Expr
。如果我真的想确保打电话的人foo
看不到他们得到了 a Bar
,我必须在树本身中添加一个类型归属。
这实际上非常棒——例如,这意味着我可以将宏指向某种模式,并Vocabulary
使用表示词汇表中术语的成员方法创建某个类的匿名子类,这些将在返回的对象上可用。
不过,我想确切地了解我在做什么,所以我有几个问题。首先,该foo
方法的返回类型实际上是什么?它仅可用于(可选)文档吗?它清楚地限制了返回类型(例如,在这种情况下我无法将其更改为Int
),如果我完全删除它,我会收到如下错误:
但是我可以将其更改为Any
并Bar
在调用foo
.
其次,这种行为是否在某处指定?这似乎是一组相当基本的问题,但我无法找到明确的解释或讨论。
scala - 使用 Global.Run 编译 Scala 代码时出现 MissingRequirementError
我正在尝试使用以下实例以编程方式编译 Scala 文件Global.Run
:
不幸的是,我得到一个MissingRequirementError
说法:
找不到编译器镜像中的对象 scala.runtime
所以我的问题是如何使用Run
类以编程方式编译文件,或者我在这里做错了什么?
我试图弄清楚是否可以更改settings
它以使其正常工作。实际上,我需要 Scala 文件中的类列表,path
不一定是完全可运行的输出。因此,如果符号仍未解决(如果我可以运行编译器阶段的一个子集),那会很好。
我也在Writing Scala Compiler Plugins,但如果我可以通过实例化 Compiler Run 对象来运行它,我更喜欢这个解决方案。我还偶然发现了Scala编译器是否可重入?(类似的代码,不同的问题),这让我觉得它可能会按照我的想法工作。
编辑 1:将 Scala JAR 添加到toolcp
(只是带有绝对路径的示例代码!)
根据评论,我将scalac.bat
类路径填充脚本改编为我的 Scala 代码: