如何将java.util.Map [String,Object]转换为scala.collection.immutable.Map [String,Any],以便将原始映射中的所有值(整数,布尔值等)转换为正确的值在Scala工作得很好.
回到Unix的时代,如果不先阅读手册页,你甚至无法关闭软件.然后Mac和Windows具有一致的菜单布局和键盘快捷键,但您仍然看到了收缩包装盒中附带的纸质用户手册,其中描述了应用程序中可能的每一项操作.在Internet之后,帮助文件变成了html文档.
如今,使用Web 2.0应用程序,您几乎看不到帮助.即使它存在,它们只是描述一些特定的任务.换句话说,应用程序更多地依赖于用户群的常识或不让我思考的因素.
几年前,微软提出了一个名为" 归纳用户界面"的概念,它基本上告诉程序员在应用程序本身上发出指令,但我不确定这个想法有多受欢迎.
F1键是否有帮助文件,用户手册和上下文相关的在线帮助?如果用户无法从UI中找到要做的事情,我是否失败了?如果没有,我应该提供多大程度的帮助?(适用于桌面和网络应用)
编辑:文档/帮助文件如何与敏捷开发方法相结合?例如,开发人员应该在UI更改之前三思而后行,这可能会淘汰一堆屏幕截图吗?
那么为什么List(1,2,3,4).contains("wtf")甚至编译?如果编译器拒绝这个会不会很好?
当我for在Scala中评估一个时,我得到一个不可变的IndexedSeq(一个具有类似数组的性能特征的集合,例如高效的随机访问):
scala> val s = for (i <- 0 to 9) yield math.random + i
s: scala.collection.immutable.IndexedSeq[Double] = Vector(0.6127056766832756, 1.7137598183155291, ...
Run Code Online (Sandbox Code Playgroud)
是for一个yield总是返回一个IndexedSeq,还是它还可以返回一些其他类型的集合类(LinearSeq例如,a)?如果它还可以返回其他内容,那么什么决定了返回类型,我该如何影响它呢?
我正在使用Scala 2.8.0.RC3.
我已经在Scala中尝试了不同的集合来对它的元素进行求和,它们比Java和它的数组(for循环)慢得多.Scala有没有像Java数组一样快的方法?
我听说scala 2.8中的数组与java相同,但实际上它们要慢得多
给定一个类,例如org.eclipse.ui.views.navigator.ResourceNavigator,如何找出要使用的jar文件?我知道它在org.eclipse.ui.ide中,但我怎么能找到它呢?
编辑:谢谢你们所有回答的人.像很多东西一样,似乎有几种方法可以给这只猫皮肤涂抹.我希望javadoc包含这些信息.到目前为止,这里有不同的方法:
没有Internet,Eclipse或NetBeans:
for f in `find . -name '*.jar'`; do echo $f && jar tvf $f | grep -i $1; done
Run Code Online (Sandbox Code Playgroud)如果您想使用Eclipse在本地查找:
如果你想从互联网上找到你或者你还没有jar:
假设你有一个List(1,"1")它是类型List [Any],这当然是正确的和预期的.现在,如果我像这样映射列表
scala> List(1, "1") map {
| case x: Int => x
| case y: String => y.toInt
| }
Run Code Online (Sandbox Code Playgroud)
结果类型是List [Int],也是预期的.我的问题是,是否存在等效于过滤器的映射,因为以下示例将导致List [Any].这可能吗?我假设这可以在编译时解决,可能不是运行时?
scala> List(1, "1") filter {
| case x: Int => true
| case _ => false
| }
Run Code Online (Sandbox Code Playgroud) 我知道Traversable,你需要一个foreach方法.Iterable需要一种iterator方法.
Scala 2.8集合SID和"与类型战斗的Bitrot"论文基本上都没有提到为什么Traversable被添加.SID只说"David McIver ......将Traversable提议为Iterable的概括".
我从IRC的讨论中模糊地收集到,当收集的遍历终止时,它与回收资源有关吗?
以下内容可能与我的问题有关.有一些奇怪的函数定义TraversableLike.scala,例如:
def isEmpty: Boolean = {
var result = true
breakable {
for (x <- this) {
result = false
break
}
}
result
}
Run Code Online (Sandbox Code Playgroud)
我认为有一个很好的理由不仅仅是作为:
def isEmpty: Boolean = {
for (x <- this)
return false
true
}
Run Code Online (Sandbox Code Playgroud) 我正在使用sbt-buildinfo插件从我的构建定义生成Scala源代码,允许我从我的Scala代码中引用项目名称,版本等.
它通过生成具有以下内容的文件BuiltInfo.scala来完成此操作:
package hello
case object BuildInfo {
val name = "helloworld"
val version = "0.1-SNAPSHOT"
val scalaVersion = "2.10.3"
val sbtVersion = "0.13.2"
}
Run Code Online (Sandbox Code Playgroud)
在
target/scala-2.10/src_managed/main/sbt-buildinfo/BuildInfo.scala.
一切都编译,我可以参考那些vals.
但是,IntelliJ Idea不会将BuildInfo.scala识别为托管源文件,因此它会停止向我显示错误.知道怎么做吗?
谢谢!
对于immutable.Map实例,getOrElseUpdate的惯用方法是什么?我使用下面的代码片段,但它似乎冗长而低效
var map = Map[Key, Value]()
def foo(key: Key) = {
val value = map.getOrElse(key, new Value)
map += key -> value
value
}
Run Code Online (Sandbox Code Playgroud)