小编the*_*mel的帖子

Scala Map来自元组可迭代

scala.collection.Map从其他馆藏构建,我经常发现自己写作:

val map = Map(foo.map(x=>(x, f(x)))
Run Code Online (Sandbox Code Playgroud)

但是,由于Map.apply只接受变量参数,因此这不起作用- 所以我必须写:

val map = Map(foo.map(x=>(x, f(x)) toSeq :_*)
Run Code Online (Sandbox Code Playgroud)

得到我想要的东西,但这看起来很痛苦.有没有比MapIterable元组构造一个更漂亮的方法?

scala scala-collections

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

SBT:对所有项目执行操作

我有一个包含多个子项目的SBT项目,即:

> projects
[info] In file:/home/me/src/foo/
[info]     popen
[info]     foobar-core
[info]   * foobar-client
[info]     foobar-db
Run Code Online (Sandbox Code Playgroud)

有没有办法在每个子项目中运行一个动作?我正在寻找类似的东西publish-all,因为我目前通过所有子项目并publish手动运行,一旦有少数子项目,这将变得相当繁琐.

我正在使用sbt-0.11.2惯性,但如果有帮助我愿意升级.

scala sbt

6
推荐指数
1
解决办法
1642
查看次数

使用scala中的yield返回和迭代集合

我在Scala中有一个DateTime和TimeSpan类(假设<和+运算符可以正常工作).我正在尝试定义一个'范围'函数,它采用开始/停止时间和步进的时间跨度.在C#中,我会以收益率来做这件事,我想我应该能够在Scala中做同样的事情......除了我得到一个奇怪的错误.

在'收益率'线上,我得到"非法开始陈述".

  def dateRange(from : DateTime, to : DateTime, step : TimeSpan) =
  {
      // not sure what the list'y way of doing this is
    var t = from

    while(t < to)
    {
      yield t; // error: illegal start of statement
      t = t + step
    }
  }
Run Code Online (Sandbox Code Playgroud)

看看这段代码,我很好奇两件事:1)我做错了什么?2)编写的代码非常必要(使用var t等).在Scala中以更快的速度执行此操作的功能是什么?

谢谢!

loops scala yield-keyword yield-return

5
推荐指数
1
解决办法
1097
查看次数

CMD变量替换参数

我试图让CMD等同于以下bash功能:

$ FOO=foo.bar
$ BAR=bar
$ BAZ=baz
$ echo ${FOO/$BAR/$BAZ}
foo.baz
Run Code Online (Sandbox Code Playgroud)

现在,当模式和替换都是常量时,CMD有一些类似的命令替换:

C:\>set FOO=foo.bar
C:\>set BAR=bar
C:\>set BAZ=baz
C:\>echo %FOO:bar=baz%
foo.baz
Run Code Online (Sandbox Code Playgroud)

但是,我似乎无法在那里引用变量 -

C:\>echo %FOO:%BAR%=%BAZ%%
%foo:bar=baz%
Run Code Online (Sandbox Code Playgroud)

我该怎么办?用于指出FOR 在批处理文件中循环内部也能正常工作的奖励点.

windows shell cmd

5
推荐指数
1
解决办法
5242
查看次数