我找了类似的问题,我发现了这个:
表达式类型DslEntry必须符合SBT文件中的Def.SettingsDefinition行enablePlugins(JavaServerAppPackaging)
我的问题很相似,但每一行都会发生.
当我尝试运行时,它会编译并成功运行.单击"导入项目"时,黄色通知不会消失,但项目会成功重新加载.例如,如果我重写任何行val _ = scalaVersion := "2.12.4"
,则错误消失,但看起来很糟糕.
如果goto-line
在非交互式elisp程序中使用该函数会出现什么问题?它的docstring发出警告说:
在Lisp程序中使用此函数通常是错误的.您可能想要的是:
Run Code Online (Sandbox Code Playgroud)(goto-char (point-min)) (forward-line (1- N))
此外,当我尝试byte-compile-file
我的init文件时goto-line
,我再次得到一个令人不快的警告:
.emacs:170:19:Warning: `goto-line' used from Lisp code
That command is designed for interactive use only
Run Code Online (Sandbox Code Playgroud)
使用goto-line
在非交互式程序真的有这么危险吗?相关地,为什么建议的forward-line
解决方案更可取?
试图了解Ocaml的命名参数机制.我理解基础知识,但文档显示了这样的示例:
# let f ~x ~y = x - y;;
val f : x:int -> y:int -> int = <fun>
# let x = 3 and y = 2 in f ~x ~y;;
- : int = 1
Run Code Online (Sandbox Code Playgroud)
在应用中仅使用波浪号时究竟发生了什么?它只是简写~x:x
,类似于定义吗?如果是这样,有人可以解释为什么这样:
# ListLabels.fold_left;;
- : f:('a -> 'b -> 'a) -> init:'a -> 'b list -> 'a = <fun>
# let add = (+) and i = 0
in ListLabels.fold_left ~add ~i [1;2;3];;
Run Code Online (Sandbox Code Playgroud)
产生
- : f:((add:(int -> …
Run Code Online (Sandbox Code Playgroud) 我想在emacs orgmode中以自定义格式插入时间戳.我想以这种形式插入当前时间(没有日期!):[HH:MM],按下.我是lisp的新手,无法弄清楚如何做到这一点.我的-file的起点是这样的:C-c -
~/.emacs
(defun org-my-custom-timestamp ()
(interactive)
( :SOME_CODE: )
)
(define-key global-map "\C-c-" 'org-my-custom-timestamp)
Run Code Online (Sandbox Code Playgroud)
现在这只是我的自定义函数的定义,称为org-my-custom-timestamp
"交互"和快捷方式分配.但是,我尝试了各种各样的事情,:SOME_CODE:
没有任何成功.
可以在功能中使用什么使其以所描述的方式工作?
是否有经验丰富的emacs用户甚至会考虑这种方式来解决它的实际问题,还是有更智能的方法来实现它?也许org-mode-internal?
我了解到Scala不会检查object-private(private[this]
)或object-protected(protected[this]
)定义的方差位置.为什么不检查它们是否安全?
我已经阅读了一些与之相关的材料,但未能找到完整的答案.首先,Odersky等人的"Scala编程"说:
http://www.artima.com/pins1ed/type-parameterization.html#19.7
事实证明,从定义它们的同一对象访问变量不会导致方差问题.直观的解释是,为了构造方差会导致类型错误的情况,您需要引用一个包含对象,该对象具有比定义对象的类型更静态的类型.
我不确定作者的意思是" 包含对象"和" 静态较弱的类型".这里更优选代码示例.
其次,"senia"在Scala Modifiers和Type参数化中给出了一个很好的例子,它显示了class-private(private
)字段可能带有方差的问题.这个例子让我相信为什么应该检查类私有成员的差异位置,但是没有给出我们不必检查对象私有/受保护定义的原因的答案.我理解这样的代码getOtherCache()
不能用object-private字段写.但它没有给出对象私有/预测定义无害的证据,我们没有编写一个程序,对象 - 私有/预测定义导致方差问题.
第三,在解决如何在Scala中实现函数memoization时,Michid简要地提到了这个主题:
http://michid.wordpress.com/2009/02/23/function_mem/
Run Code Online (Sandbox Code Playgroud)class Memoize1[-T, +R](f: T => R) extends (T => R) { ... private[this] val vals = mutable.Map.empty[T, R] ... }
但是,由于仅从包含实例访问val,因此不会导致方差问题.
不幸的是,它没有回答我的问题"如何(或为什么)是与方差相关的访问控制?".
您能否更详细地解释不检查对象 - 私有/受保护定义的方差位置(或提供一些参考)的基本原理?
正如所有经验丰富的elispers在某些时候发现的那样,代码就像破了:
(let ((a 3)
(b 4)
(c (+ a b)))
c)
Run Code Online (Sandbox Code Playgroud)
let*
当引用绑定子句中的刚绑定变量时,应该使用表单.
我只是想知道 - 为什么看似错误的行为是默认的?let*
无论人们如何使用它,总是有选择的风险吗?
我一直在尝试使用scala-parser-combinator库构建一个SQL解析器,我已将其大大简化为以下代码。
class Expression
case class FalseExpr() extends Expression
case class TrueExpr() extends Expression
case class AndExpression(expr1: Expression, expr2: Expression) extends Expression
object SimpleSqlParser {
def parse(sql: String): Try[Expression] = new SimpleSqlParser().parse(sql)
}
class SimpleSqlParser extends RegexParsers {
def parse(sql: String): Try[_ <: Expression] = parseAll(expression, sql) match {
case Success(matched,_) => scala.util.Success(matched)
case Failure(msg,remaining) => scala.util.Failure(new Exception("Parser failed: "+msg + "remaining: "+ remaining.source.toString.drop(remaining.offset)))
case Error(msg,_) => scala.util.Failure(new Exception(msg))
}
private def expression: Parser[_ <: Expression] =
andExpr | falseExpr | …
Run Code Online (Sandbox Code Playgroud) 假设我有一个缺点列表,如下所示:
(setq foo '(("a" . 1) ("b" . 2) ("c" . 3)))
Run Code Online (Sandbox Code Playgroud)
我想通过"密钥名称"检索特定缺点单元格的值.有没有让我这样做的功能?
例如
(get-by-key "a" foo) ;; => 1
Run Code Online (Sandbox Code Playgroud)
或类似的东西.提前致谢!