Windows上的某些批处理文件使用带有多行的IF语法,如下所示:
if var==rule (
some comands
) else (
else commands
)
Run Code Online (Sandbox Code Playgroud)
现在,Windows Vista x64决定将所有32位文件放在"C:\ Program Files(x86)"下.不幸的是,每当你在没有引号的多行IF中使用环境变量(例如PATH)时,变量值内的括号会混淆IF,从而中止批处理文件.例如:
if "%OS%"=="Windows_NT" (
@setlocal
call :set_home
set _ARGS=%*
) else (
set _SCALA_HOME=%SCALA_HOME%
rem The following line tests SCALA_HOME instead of _SCALA_HOME, because
rem the above change to _SCALA_HOME is not visible within this block.
if "%SCALA_HOME%"=="" goto error1
call :set_args
)
Run Code Online (Sandbox Code Playgroud)
即使%SCALA_HOME%出现的行未执行,带有此文件的批处理文件也将失败.这很烦人.这有解决方案吗?
我正在寻找一个将列表划分为固定大小的子列表的功能,这正是Google Collections库中的Lists.partition所做的.我在Scala Collections API中找不到这样的方法.我错过了什么吗?
为什么with-openScala标准库中没有提供ARM(如Clojure )?
说我有这个:
my %hash;
$hash{"a"} = "abc";
$hash{"b"} = [1, 2, 3];
Run Code Online (Sandbox Code Playgroud)
以后我怎么能知道存储的是一个标量,如in "abc",还是数组,比如[1, 2, 3]?
我正在创建一个更快的字符串拆分器方法.首先,我写了一个非尾递归版本返回List.接下来,尾递归使用ListBuffer然后调用toList(+=并且toList是O(1)).我完全期望尾递归版本更快,但事实并非如此.
有谁能解释为什么?
原始版本:
def split(s: String, c: Char, i: Int = 0): List[String] = if (i < 0) Nil else {
val p = s indexOf (c, i)
if (p < 0) s.substring(i) :: Nil else s.substring(i, p) :: split(s, c, p + 1)
}
Run Code Online (Sandbox Code Playgroud)
尾递归:
import scala.annotation.tailrec
import scala.collection.mutable.ListBuffer
def split(s: String, c: Char): Seq[String] = {
val buffer = ListBuffer.empty[String]
@tailrec def recurse(i: Int): Seq[String] = {
val …Run Code Online (Sandbox Code Playgroud) 我正在尝试设置Capistrano进行部署,但我现在偶然发现了capistrano用户的常见假设:SSH到远程主机的用户将有权写入部署目录.
在这里,管理员是普通用户,只有一个区别:他们可以sudo.起初,我认为这就足够了,因为有一些与sudo相关的配置,但似乎事实并非如此.
有没有解决的办法?创建部署所有人共享的用户不是可接受的解决方案.
编辑:为了清楚说明,没有调用sudo就不会发生部署操作 - 这是检查用户是否被允许部署的网关点,它应该是一个强制检查点.
目前接受的答案不符合该标准.它通过向用户授予额外权限来解决sudo问题.无论如何我都接受了,因为我得出的结论是卡皮斯特拉诺在这方面从根本上被打破了.
我正在将Gitorious与Gitlab进行比较,虽然我喜欢Gitlab有很多东西,但它有一个非常基本的问题.对于每个新存储库,创建者需要管理谁有权访问该存储库.
我们的模型非常简单:如果您可以访问gitlab,则可以访问大多数存储库.只有少数存储库会被关闭,我们甚至不需要在gitlab上使用它们.支持那个模型,但我还没有看到任何关于gitlab的方法.
可以吗?如果是这样,怎么样?
Scala 2.12里程碑1的发布表明它需要Java 1.8.那时无法访问Java 1.8的Scala用户应该做些什么呢?
我对Scala很新,但我现在正在练习.
我有一个字符串
"A>Augsburg;B>Berlin".我最终想要的是一张地图
val mymap = Map("A"->"Augsburg", "B"->"Berlin")
我做的是:
val st = locations.split(";").map(dynamicListExtract _)
与功能
private def dynamicListExtract(input: String) = {
if (input contains ">") {
val split = input split ">"
Some(split(0), split(1)) // return key , value
} else {
None
}
}
现在我有了 Array[Option[(String, String)
如何将其优雅地转换为Map [String,String]
有人可以帮忙吗?谢谢
我试图从另一个问题中得到一个例子,我遇到了一些我无法解释的事情:
scala> import scala.reflect.runtime.{currentMirror => m}
import scala.reflect.runtime.{currentMirror=>m}
scala> m.mkToolBox()
<console>:12: error: value mkToolBox is not a member of reflect.runtime.universe.Mirror
m.mkToolBox()
^
scala> import scala.tools.reflect.ToolBox
import scala.tools.reflect.ToolBox
scala> m.mkToolBox()
res3: scala.tools.reflect.ToolBox[reflect.runtime.universe.type] = scala.tools.reflect.ToolBoxFactory$ToolBoxImpl@225765b0
Run Code Online (Sandbox Code Playgroud)
怎么mkToolBox不是m导入之前的成员ToolBox,而是之后的成员?
scala ×6
64-bit ×1
batch-file ×1
benchmarking ×1
capistrano ×1
csv ×1
deployment ×1
gitlab ×1
guava ×1
map ×1
performance ×1
perl ×1
permissions ×1
reflection ×1
scala-2.10 ×1
scala-2.12 ×1
split ×1
string ×1
windows ×1