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)
得到我想要的东西,但这看起来很痛苦.有没有比Map
从Iterable
元组构造一个更漂亮的方法?
我有一个包含多个子项目的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中有一个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中以更快的速度执行此操作的功能是什么?
谢谢!
我试图让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
在批处理文件中循环内部也能正常工作的奖励点.