当我学习一门新语言的时候,我通常会用很多愚蠢的println来看看特定时间里的值是什么.它通常就足够了,因为语言通常具有等效的tostring.在使用erlang尝试相同的方法时,当尝试打印的值不是列表时,我的webapp就会"挂起".当打印的变量是元组而不是列表时,会发生这种情况.没有错误,例外,没有......只是没有回应.现在,我正在通过小心我正在写的内容而糊涂,随着我学到更多,事情变得越来越好.但我想知道,有没有办法更可靠地[盲目]将值打印到标准输出?
谢谢,
--tim
我有一个枚举,我想在一个actor的模式匹配中使用.我没有得到我期望的东西,现在,我怀疑我错过了一些简单的东西.
我的枚举,
object Ops extends Enumeration {
val Create = Value("create")
val Delete = Value("delete")
}
Run Code Online (Sandbox Code Playgroud)
然后,我从String创建一个Ops:
val op = Ops.valueOf("create")
Run Code Online (Sandbox Code Playgroud)
在我的比赛中,我有:
case (Ops.Create, ...)
Run Code Online (Sandbox Code Playgroud)
但是Ops.Create似乎不等于ops.valueOf("create")
前者只是一个原子'创造'而后者是一些(创造)
希望这是足够的信息让别人告诉我我错过了什么...
谢谢
我试图在这里描述的守卫中使用记录[1].如果我使用那里描述的简短形式:
handle(Msg, State) when Msg==#msg{to=void, no=3} ->
Run Code Online (Sandbox Code Playgroud)
......我从未得到过匹配......但是,如果我完全扩展到:
handle(Msg, State) when Msg#msg.to==void, Msg#msg.no==3 ->
Run Code Online (Sandbox Code Playgroud)
... 一切都很好.正如我对大多数erlang文档所做的那样,我读错了吗?
谢谢, -
[1] - http://www1.erlang.org/doc/reference_manual/records.html#id2278275
我错过了一些我收集的相当简单的语法.我正在尝试将元素标签重写为其他内容,并保持其他所有内容不变.
object htmlRule extends RewriteRule {
override def transform(n: Node): Seq[Node] = n match {
case Elem(prefix, "document", attribs, scope, child@_*) =>
Elem(prefix, "html", attribs, scope, child)
case other => other
}
}
Run Code Online (Sandbox Code Playgroud)
现在,我要求解释两件事:
1)"child @ _*"究竟用简单的英语表示什么?
2)如何捕获"child @ _*"的值并让它直接传递给新元素?目前,我得到以下错误,这是有道理的.
[error] found : Seq[scala.xml.Node]
[error] required: scala.xml.Node
[error] Elem(prefix, "html", attribs, scope, child)
Run Code Online (Sandbox Code Playgroud)
我也不是这样,所以如果有一个更好的方法来简单地更改特定节点的元素名称,那就让我们来吧......
谢谢, -