在尝试将元组解包为val时,我在scala中注意到以下行为:
scala> val (A, B, C) = (1, 2, 3)
<console>:5: error: not found: value A
val (A, B, C) = (1, 2, 3)
^
<console>:5: error: not found: value B
val (A, B, C) = (1, 2, 3)
^
<console>:5: error: not found: value C
val (A, B, C) = (1, 2, 3)
^
scala> val (u, v, w) = (1, 2, 3)
u: Int = 1
v: Int = 2
w: Int = 3
Run Code Online (Sandbox Code Playgroud)
这是因为scala的模式匹配机制会自动假设所有以模式中的大写字母开头的标识符都是常量,还是由于某些其他原因?
谢谢!
我想移植一些现有的j2se库(例如Apache Compression libs)来用于Blackberry开发,但是有一个问题(而不仅仅是一个).
首先,大多数java库广泛使用j2me平台上通常缺少的j2se集合和数据类型 - 但由于Apache Harmony这样的开源j2se api实现,这在理论上是可解决的.更大的问题是,看起来,Blackberry JDK基于java 1.4,所以任何使用泛型和其他1.5功能的代码,如Enums,都不能毫不费力地在Blackberry上编译.
这提出了一个有趣的问题,即是否有任何现有的工具或项目可以进行自动1.5-> 1.4转换,同时支持j2me-bastardized字节码:)
我能找到的一个项目是Retroweaver,但我不太确定该项目有多活跃.
我敢肯定1.5-> 1.4自动转换的问题并不是唯一的 - 所以有人有这方面的经验吗?
我正在尝试实现一个基于HashMap的树,该树支持给定根密钥的O(1)子树查找.为了达到这个目标,我正在努力做到以下几点:
scala> type Q = HashMap[Char, Q]
<console>:6: error: illegal cyclic reference involving type Q
type Q = HashMap[Char, Q]
^
Run Code Online (Sandbox Code Playgroud)
所以问题是,有没有办法让我做一些这样的事情而不诉诸丑陋HashMap[Char, Any]的随后的价值观HashMap[Char, Any]?
现在,我也看到我可以使用类似下面的内容来避免循环引用错误,它甚至可能更干净 - 但是找到如何正确地执行它的第一种方式很好,只是为了教育价值.
import collections.mutable.HashMap
class LTree {
val children = new HashMap[Char, LTree]
}
Run Code Online (Sandbox Code Playgroud)
谢谢一堆.
我正处于 Blackberry/J2ME 项目的开始阶段 —— 加上这个出色平台带来的其他限制,缺乏对反射和 1.3 语言级别的支持意味着绝大多数现有的 IoC 容器都无法使用。(谷歌有没有 AOP 的 Android 版 Guice,但即使这样也需要支持注释)。
因此,J2ME 上 IoC 容器的空间非常有限。引起我注意的一个框架称为Signal Framework,它看起来很有前途。它试图在概念上接近 Spring Framework 的 IoC,实现其功能的一小部分,并且不依赖字节码修改或导致运行时 xml 解析。相反,它在构建时处理配置 XML 以生成实现此 IoC 功能的 Java 代码。
一般来说,在构建时生成代码对于移动应用程序来说似乎是一种非常明智的方法——如果我的应用程序必须在用户设备上进行较少的 XML 解析,那也太棒了!
那么,您在 J2ME/CLDC 上实现 IoC 的经验是什么,您是如何消除口中苦涩的?