小编Eug*_*ota的帖子

斯卡拉地图:神秘的语法糖?

我刚刚发现了scala的这种语法Map(这里以可变形式使用)

val m = scala.collection.mutable.Map[String, Int]()
m("Hello") = 5
println(m) //PRINTS Map(Hello -> 5)
Run Code Online (Sandbox Code Playgroud)

现在我不确定这是否是语言中内置的语法,或者这里是否有更基本的东西涉及地图扩展的事实PartialFunction.谁能解释一下?

maps scala syntactic-sugar scala-collections

9
推荐指数
2
解决办法
1万
查看次数

如何访问和更新地图地图的可变地图中的值

我有一个三级数据结构(缩进和换行符以便于阅读):

scala> import scala.collection.mutable.Map
import scala.collection.mutable.Map

scala> val m = Map("normal" -> Map("home" -> Map("wins" -> 0, "scores" -> 0),
                                   "away" -> Map("wins" -> 0, "scores" -> 0)))
m: scala.collection.mutable.Map[java.lang.String,
   scala.collection.mutable.Map[java.lang.String,
   scala.collection.mutable.Map[java.lang.String,Int]]] = 
Map((normal,Map(away -> Map(wins -> 0, scores -> 0),
     home -> Map(wins -> 0, scores -> 0))))
Run Code Online (Sandbox Code Playgroud)

访问最里面的数据(分数)需要大量输入:

import org.scalatest.{Assertions, FunSuite}

class MapExamplesSO extends FunSuite with Assertions {
  test("Update values in a mutable map of map of maps") {
    import scala.collection.mutable.Map
    // The m map is essentially an …
Run Code Online (Sandbox Code Playgroud)

scala map scala-2.8 scala-collections

9
推荐指数
2
解决办法
1万
查看次数

我是否需要Mac来制作Java应用程序包?

我想在不使用Mac的情况下为Mac创建Java应用程序包.

根据Mac OS X的Java部署选项,我可以使用Xcode,Jar Bundler或命令行来完成.一旦设置了文件和文件夹,命令行方法所需的就是调用/ Developer/Tools/SetFile.Linux或Windows上是否有SetFile克隆?如果没有,我必须得到一台Mac吗?

java deployment macos

8
推荐指数
1
解决办法
2302
查看次数

适用于Windows程序员的最佳"官方"脚本语言

假设有几个项目主要由聪明的实习生维护,他们最终会在一段时间后离开.脚本在这里和那里的关键部分使用,例如,备份数据库,重命名,压缩,通过ssh移动,解压缩,然后使用不同的设置恢复它.你知道,脚本的东西.

设置了应用程序端的编程语言,但脚本的编程语言已经放宽了.目前可能有健康的bash和.bat文件组合,也许还有一些Perl.

1)为了避免语言扩散,2)因为我不想强迫bash对未来的Windows程序员,我想设置一个"官方"脚本语言.

谷歌为此选择了Python,它以可读性,易学性和良好的图书馆而闻名; 但是,与C语法,Pascal或Ruby相比,我个人认为它不具有可读性.

在任何情况下,如果您被迫在Windows机器上使用一种脚本语言(如果您愿意,可以使用Cygwin),那么您希望它是什么样的,为什么?

相关的宗教战争:

windows deployment shell scripting

8
推荐指数
2
解决办法
2万
查看次数

Windows程序员如何在Mac OS X上充分发挥作用?

我一直在家里使用MacBook Pro几个月,我想知道是否有一本好的书或指南可以帮助我成为Mac上更好的程序员.也许Mac相当于Beginning Linux Programming.注意我不是在寻找有关如何编写Mac应用程序的资源,而是在寻找使用Mac进行一般开发环境的更多一般指南.

作为背景,我白天是Windows程序员.多年来我也做过一些Linux和BSD,特别是在学校里,比如套接字编程,图形,make install类型.在家里,我将在Mac上做Java,Scala,PHP等.

到目前为止,我一直在使用Eclipse,QuickSilver和TextMate.已设置VMWare Fusion,XCode和NetBeans,但我不使用它们.DVI KVM切换器连接到真正的键盘,轨迹球和显示器.最近熬夜到与MacPorts打架,并想通了我需要x86_64.我最挣扎的是配置PHP.我不知道他们为什么不发布MySQL和GD库.我最终想通过谷歌搜索,并从源代码构建扩展.我有一种感觉,我没有得到备忘录,也没有阅读一些关于如何成为Mac程序员的基本指南,比如整个架构的工作方式.Windows程序员如何在Mac OS X上充分发挥作用?

相关:为程序员设置Mac

编辑:在我看来,我想开发的特定类型的应用程序并不重要.它可能是我提到的Java,Scala,PHP或Cocoa,C++等等.

我正在寻找的是具体的书籍,资源,关于如何在Mac上更有效的程序员的建议,最好是"安装XYZ"以外的东西.

macos

8
推荐指数
2
解决办法
2812
查看次数

什么时候应该使用Scala的Array而不是其他集合?

这更像是一个风格和偏好的问题,但这里说:我什么时候应该使用scala.Array?我一直使用List,偶尔遇到Seq,Map等,但我从未使用过,也没有看过Array.是否仅适用于Java兼容性?我错过了一个常见的用例吗?

arrays coding-style scala scala-collections

8
推荐指数
1
解决办法
1290
查看次数

Scala中的平等关系

我只是偶然发现了Tony Morris 关于Java博客文章之一以及该语言的一个基本问题:为集合定义一个定制的平等关系.这是我认为是一个大问题,并想知道是否有一些scala解决方案.

经典问题表现在考虑交易.假设我在@ 150p进行了两笔+100沃达丰股票交易.这两笔交易是平等的,是吗?除非他们不是同一笔交易.对于普通的真实世界系统,使用持久性或序列化,我不能依赖身份来告诉我两个引用是否属于同一行业!

所以我想要的是能够创建一个我可以传递Equality-relation的集合:

val as = CleverSet[Trade](IdEquality)
val bs = CleverSet[Trade](EconomicsEquality)
Run Code Online (Sandbox Code Playgroud)

我如何以有效的方式实现我的集合(除非EqualityRelation还定义了一种hash机制)?

trait EqualityRelation[T] {
  def equal(t1: T, t2: T) : Boolean
  def hash(t: T) : Int
}
Run Code Online (Sandbox Code Playgroud)

所以问题是:

  • 有没有提供这种能力的图书馆?
  • 有没有办法在Scala中做到这一点?

似乎带有隐含,添加到现有的scala Set类型将是一件非常容易的事情.

scala equality equals scala-2.8 scala-collections

8
推荐指数
1
解决办法
3175
查看次数

breakOut到特定集合类型的简短方法?

scala> val m = Map(1 -> 2)
m: scala.collection.immutable.Map[Int,Int] = Map(1 -> 2)

scala>  m.map{case (a, b) => (a+ 1, a+2, a+3)}
res42: scala.collection.immutable.Iterable[(Int, Int, Int)] = List((2,3,4))
Run Code Online (Sandbox Code Playgroud)

我想要的是结果类型是List [(Int,Int,Int)].我发现的唯一方法是:

scala>  m.map{case (a, b) => (a+ 1, a+2, a+3)}(breakOut[Map[_,_], (Int, Int, Int), List[(Int, Int, Int)]])
res43: List[(Int, Int, Int)] = List((2,3,4))
Run Code Online (Sandbox Code Playgroud)

有更短的方式吗?

scala scala-2.8 scala-collections

8
推荐指数
2
解决办法
575
查看次数

使用sbt-assembly将供应商信息添加到MANIFEST.MF

我正在使用sbt-assembly来创建一个可运行的jar,但我的应用程序崩溃是因为jai imageio从MANIFEST.MF文件中加载了供应商名称.如果我手动编辑META-INF/MANIFEST.MF文件:

Manifest-Version: 1.0
Main-Class: myMainClass
Run Code Online (Sandbox Code Playgroud)

Implementation-Vendor: foo
Implementation-Title: bar
Implementation-Version: 1.0
Manifest-Version: 1.0
Main-Class: myMainClass
Run Code Online (Sandbox Code Playgroud)

一切正常.

如何配置sbt或sbt-assembly以在jar中包含其他实现信息?或者还有另一种方法吗?

(ps:查询包信息的位置:http://www.java.net/external?url = http://www.java2s.com/Open-Source/Java-Document/6.0-JDK- Modules/Java-Advanced-Imaging/com/sun/media/imageioimpl/common/PackageUtil.java.htm)

scala sbt sbt-assembly

8
推荐指数
1
解决办法
3223
查看次数

在sbt中定义自定义配置

我想在集成服务器和开发环境中设置另一组运行测试的选项.

我们有这个选择:

testOptions := Seq(Tests.Filter(s => Seq("Spec", "Unit").exists(s.endsWith(_))))
Run Code Online (Sandbox Code Playgroud)

testOptions如果test命令以某个范围为前缀,如何更改,所以只应用它teamcity:test

我希望,testOptions将使用类似的语法进行修改:

testOptions in Teamcity := ...
Run Code Online (Sandbox Code Playgroud)

我也想知道,如何定义自定义范围,最好是简单*.sbt构建,而不是project/*.scala构建.

scala sbt

8
推荐指数
1
解决办法
4598
查看次数