有没有一种简单的方法可以找出使用Leiningen可用的依赖项版本?
例如,如果我有一个依赖于Hiccup和Compojure的网络应用程序,我怎么能确定我在每个的最新版本而不去每个的github页面?
注意:我使用Ant和Ivy来构建我的Java项目,因此我对Maven的知识有限 - 所以请说明(或提供精细链接供我阅读)Leiningen向我公开的任何Maven概念,这对我有帮助(I知道在引擎盖下,Leiningen使用Maven进行依赖性解析.助教.
如果我没有导入除Scala通常默认值之外的任何内容,那么范围内有多少含义(隐式转换)?
是否有完整的列表,最好按照他们可以采取行动的类型进行组织?
我正在玩JDK 7的Java NIO.2 API.
特别是,我想调用方法: Paths#get(String first, String... more)
这是一个静态方法,它至少接收一个字符串,并返回与之对应的Path对象.有一个重载的形式:Paths#get(URI uri)
但是,我似乎无法从Clojure调用top方法.我最近能得到的是:
(Paths/get ^String dir-fq (object-array 0))
Run Code Online (Sandbox Code Playgroud)
失败的是:
java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;
Run Code Online (Sandbox Code Playgroud)
正如你所料.毕竟,我们将Object []传递给期望String []的东西.
我已经尝试删除(对象数组)表单 - 但这只会导致Clojure尝试调用get(URI)方法 - 无论是否有类型提示.
将nil作为Paths#get(String,String ...)的第二个参数传递会导致调用正确的方法,但Java 7随后会因NPE而失败.
我似乎无法在Clojure中找到表达String []类型的方法 - 我猜我需要这样做或者为调度系统提供一个提示.
有任何想法吗?
在scala(版本2.8.1 final)的编译类上运行javap -v时:
class Point(x:Int,y:Int)
我得到了常量池条目的以下输出,以及指示不可打印字符的几个终端蜂鸣声?
#19 = Utf8 Lscala/reflect/ScalaSignature;
#20 = Utf8 bytes
#21 = Utf8 \t2\"\t!!>Lg9A(Z7qift4A\nqCA\r!BA
aM\4
-\tAA[1wC&Q\nTWm;=R\"\t
E\tQa]2bYL!a\tMr\1PE*,7\r\t+\t)A-\t/%:$
eDu\taP5oSRtDc!CAqA!)Qca-!)!da-
#22 = Utf8 RuntimeVisibleAnnotations
#23 = Utf8 Point
#24 = Class #23 // Point
Run Code Online (Sandbox Code Playgroud)
知道发生了什么,为什么?我之前从未见过CONSTANT_Utf8条目中的二进制垃圾.
我在Mac 10.6上使用OpenJDK 7版本,如果这有所不同 - 我会尝试在明天复制我有其他操作系统时,并会相应更新.
博客圈最近发生的事件表明,Scala可能出现的性能问题是它使用了闭包来实现.
这个设计决策的原因是什么,而不是C或Java风格的"原语" - 这将是一个简单的循环?
(我在这里区分了Java的for和它的"foreach"构造,因为后者涉及一个隐式迭代器).
更多细节,跟随彼得.这一点Scala:
object ScratchFor {
def main(args : Array[String]) : Unit = {
for (val s <- args) {
println(s)
}
}
}
Run Code Online (Sandbox Code Playgroud)
创建3个类:ScratchFor $$ anonfun $ main $ 1.class ScratchFor $ .class ScratchFor.class
ScratchFor :: main只转发到伴侣对象ScratchFor $ .MODULE $ :: main,它会旋转一个ScratchFor $$ anonfun $ main $ 1(这是AbstractFunction1的一个实现).
它位于AbstractFunction1的匿名内部impl的apply()方法中,实际代码存在,这实际上是循环体.
我没有看到HotSpot能够将其重写为一个简单的循环.尽管如此,很高兴被证明是错误的.
我有一个Rust应用程序(一个简单的解释器),在环境可用之前,需要进行一些设置(初始化存储库)。
我知道Rust是以多线程方式运行其测试(通过货物测试)的,所以我需要在运行任何测试之前初始化存储库。我还需要每次运行只执行一次,而不是每次测试之前。
在Java的JUnit中,这可以通过@BeforeClass(或JUnit 5中的@BeforeAll)方法完成。我如何在Rust中达到同一目的?
我使用maven开发了一个小的java实用程序库.现在我想添加一些演示/示例代码来展示如何使用该库.
放在哪里最好的地方?
在包含其他代码的子包中.我不喜欢这个,因为它意味着演示将包含在库jar文件中.
在一个新的maven神器.这是有效的,但我希望让演示更紧密地连接到库源.
作为子工件.还没试过这个.似乎使一切都变得复杂,应该是简单的事情.
这有什么共同的模式吗?
我几乎肯定做了一些非常愚蠢的事情,这使得这个演员不能正常工作,但是经过一段时间的盯着它后我看不到它.所以我想我会问.
我无法使用此代码 - 因为,如果我发送消息如4(应该触发默认情况),则不打印任何内容,并且我不能通过发送温度警报来绊倒显示器.
我究竟做错了什么?
class TemperatureMonitor extends Actor {
var tripped : Boolean = false
var tripTemp : Double = 0.0
def act() {
while (true) {
receive {
case Heartbeat => 0
case TemperatureAlarm(temp) =>
tripped = true
tripTemp = temp
case _ => println("No match")
}
}
}
}
Run Code Online (Sandbox Code Playgroud)