当我使用Macbook的触摸板时,如何在滚动并点击缓冲区底部顶部时使Emacs(Cocoa OSX,版本24.0.91来自http://emacsformacosx.com/builds)发出噪音?我知道我也许应该用键盘滚动,但我已经习惯使用Macbook的触控板了.
有没有办法让Java Exceptions更具信息性?
例如,从ClassCastException docs中获取此代码:
Object x = new Integer(0);
System.out.println((String)x);
Run Code Online (Sandbox Code Playgroud)
Java会给我一个ClassCastException,其中包含"无法将Integer类型转换为String"的消息.我怎么能说:"不能将整数0转换为字符串"而是?如果我试图将一个字符串"foo"强制转换为Person,那么就说:"不能将String foo强制转换为Person"?因此,我试图投射的对象的价值.
我能以某种方式用更有用的信息替换标准的ClassCastException,所以我不必介绍很多try/catch-blocks吗?子类化当然是一个选项,但是我必须引入大量的try/catch-blocks.
我问的原因实际上是因为另一种编译语言编译成JVM,Clojure.
在Clojure中,初学者经常犯这样的错误:
(def my-list ("foo" "bar"))
Run Code Online (Sandbox Code Playgroud)
这会导致错误消息:
java.lang.String cannot be cast to clojure.lang.IFn
Run Code Online (Sandbox Code Playgroud)
对于初学者来说,看到以下内容会非常有帮助:
java.lang.String "foo" cannot be cast to clojure.lang.IFn
Run Code Online (Sandbox Code Playgroud)
所以他们会得到他们试图在这里使用字符串aa函数的线索.
能够为学习环境注入这些新的Exceptions,而不是实际重写Clojure编译器,这将是很好的.它可以通过捕获这些类型的异常来解决REPL级别.我仍然很好奇这是否有可能采用一些漂亮的技术.
假设我们有:
interface Foo
{
bool Func(int x);
}
class Bar: Foo
{
bool Func(int x)
{
return (x>0);
}
}
class Baz: Foo
{
bool Func(int x)
{
return (x<0);
}
}
Run Code Online (Sandbox Code Playgroud)
现在我们可以将Bar和Baz作为Foos折腾并调用他们的Func方法.
代表们对此进行了简化:
delegate bool Foo(int x);
bool Bar(int x)
{
return (x<0);
}
bool Baz(int x)
{
return (x>0);
}
Run Code Online (Sandbox Code Playgroud)
现在我们可以作为Foo代表折腾Bar和Baz.
除了获得更短的代码之外,代表们的真正好处是什么?
(require '[clojure.core.reducers :as r])
(def data (into [] (take 10000000 (repeatedly #(rand-int 1000)))))
(defn frequencies [coll]
(reduce (fn [counts x]
(merge-with + counts {x 1}))
{} coll))
(defn pfrequencies [coll]
(r/reduce (fn [counts x]
(merge-with + counts {x 1}))
{} coll))
user=> (time (do (frequencies data) nil))
"Elapsed time: 29697.183 msecs"
user=> (time (do (pfrequencies data) nil))
"Elapsed time: 25273.794 msecs"
user=> (time (do (frequencies data) nil))
"Elapsed time: 25384.086 msecs"
user=> (time (do (pfrequencies data) nil))
"Elapsed time: 25778.502 …Run Code Online (Sandbox Code Playgroud) 我听说很多Emacs用户在git版本控制下拥有他们的init文件(.emacs或init.el),并且当他们在多个系统上运行Emacs时,通过Dropbox同步git存储库.为什么你会在这种情况下使用git?
通常检查您所在的系统以及根据具体情况加载和设置的内容可能发生在所有系统的同一个init文件中.为什么要保存init文件的版本历史记录,为它确定git存储库的合理性是否真的非常重要?
那么,是不是简单地将你的init文件放在Dropbox目录中并直接从Emacs加载那个,而不是从Dropbox中同步的git repo中提取最新版本?
如今,有许多编程语言:功能,面向对象,动态或静态类型,或这些特性的混合.
最近我注意到了这个版本:http://opendylan.org/news/2011/12/10/new_release.html
打开迪伦.
如果已经有Clojure,Python,Java,Scala,C#,Common Lisp,Scheme以及可以说更大,更重要的社区以及更多围绕它们的库,为什么人们学习这种编程语言会有趣呢?
我希望这篇文章不会因为"过于主观"而被关闭,我只是对Dylan与其他所有编程语言的区别感兴趣!
在开发期间,我想为使用schema.core/defn定义的所有函数启用验证,而不是必须使用它们进行注释:^:always-validate.这个库有可能吗?
这样的东西不起作用,可能是因为元数据只在编译时添加:
(def dev false)
;; example of schema validation
(sm/defn ^{:always-validate dev}
add :- s/Num
[a :- s/Num b :- s/Num]
(+ a b))
Run Code Online (Sandbox Code Playgroud) 我正在寻找来自除Common Lisp之外的其他语言的Clojure功能的概述.
例如:
欢迎您的意见!
我正在阅读关于TDD的Clojure on Action第8章,并尝试使用stubing宏.它使用动态绑定机制来存根函数.唉,在Clojure 1.3中,不可能将绑定机制用于非动态变量,因此在大多数情况下,存根宏不起作用,除非您明确声明指向函数动态的var.然后我想知道在Midje如何进行存根并试图找到"提供"的来源,但我找不到它.所以这里:
如何在Midje实施"提供"?有人可以详细解释一下吗?
我在.sass文件中使用unicode转义,我想保留它,但是sass在输出中创建了一个奇怪的字符.怎么解决这个?
我正在使用Mac和Sass版本3.4.13.
mborkent@MacBook-Pro-van-Michiel /tmp $ cat new.sass
.icon-ok
&:before
content: "\e601"
mborkent@MacBook-Pro-van-Michiel /tmp $ sass new.sass new.css
mborkent@MacBook-Pro-van-Michiel /tmp $ cat new.css
@charset "UTF-8";
.icon-ok:before {
content: "?"; }
/*# sourceMappingURL=new.css.map */
Run Code Online (Sandbox Code Playgroud)