如果我明确定义这样的功能(defn f [x] (get x "a")),那么这两个(-> {"a" 1} f)并(f {"a" 1})达到预期效果.
但是,如果我使用匿名函数,只能(#(get % "a") {"a" 1})工作但(-> {"a" 1} #(get % "a"))抛出异常:CompilerException java.lang.ClassCastException: clojure.lang.PersistentArrayMap cannot \
be cast to clojure.lang.ISeq, compiling:(NO_SOURCE_PATH:1:1)
要创建我的班级序列,
type MyInt(i:int) =
member this.i = i
[1;2;3] |> Seq.map(fun x->MyInt(x))
Run Code Online (Sandbox Code Playgroud)
哪里fun x->MyInt(x)似乎是多余的.如果我能写的话会更好Seq.map(MyInt)
但是我不能.我能想到的一个解决方法是定义一个单独的函数
let myint x = MyInt(x)
[1;2;3] |> Seq.map(myint)
Run Code Online (Sandbox Code Playgroud)
有一个更好的方法吗?
我试图用Clojure做一些简单的脚本编写工作.例如,我将加载一个包含文件映射的json,删除给定的密钥,然后将其保存回文件.使用leiningen,似乎我必须创建一个应用程序,将data.json或其他任何内容添加到依赖项中,然后我可以启动lein repl来完成真正的工作.考虑用Python做同样的事情.它应该用Python中的3行代码完成.leiningen有一个简单的方法吗?
我从emacs转移到vim的原因之一是避免使用Ctrl + N和Ctrl + P等难以置信的键绑定来上下.我更喜欢像hjkl这样更符合人体工程学的键.但是,在没有使用箭头键或Ctrl + N/P的情况下,我没有找到在Omnicomplete框中导航的方法.
vim是否提供其他上下键?

在Java中,我通常这样做,
MyObject o1 = new MyObject();
o1.doSomething();
MyObject o2 = new MyObject();
o2.doWith(o1);
MyObject o3 = new MyObject();
o3.doWithBoth(o1, o2);
Run Code Online (Sandbox Code Playgroud)
在Clojure中,如果我使用let绑定,它可能看起来像,
(let [o1 (create-obj)]
(.doSomething o1)
(let [o2 (create-obj)]
(.doWith o2 o1)
(let [o3 (create-obj)]
(.doWithBoth o3 o1 o2))))
Run Code Online (Sandbox Code Playgroud)
代码增长到右侧,这是丑陋的,难以维护.有一个更好的方法吗?
Pandas 允许唯一和非唯一索引。某些操作仅允许唯一索引。在什么情况下使用非唯一索引才有意义?我认为强制执行索引的唯一性可以帮助提前发现数据完整性问题。
我认为在没有显式类型转换的情况下,go不允许任何命名类型进行实际类型赋值.
但如果我分配[]byte给它,如何编译没有错误json.RawMessage?
var a json.RawMessage // type RawMessage []byte
var b []byte
a = b
var x time.Duration // type Duration int64
var y int64
x = y // ERROR: cannot use y (type int64) as type time.Duration in assignment
Run Code Online (Sandbox Code Playgroud)
可能重复:
F#相当于LINQ Single
如果序列的唯一元素,则此函数应返回序列的第一个元素,否则抛出异常.
F#是否将此作为内置函数?如果没有,为什么呢?似乎C#在Enumerable类扩展函数中有类似的一个.
我知道JVM和CLR被设计为基于堆栈的虚拟机.当JIT将字节码编译成本机代码时,它是否还将堆栈原语(加载/存储)转换为X86平台上的寄存器?
如果是,看起来字节码是基于堆栈还是基于寄存器并不重要.JIT很重要.
我用,(try (/ 1 0) (catch Exception e))但似乎多余.有更简单的方法吗?我使用它的一个例子就是我这样做sql/drop-table.如果该调用因为表不存在而失败并不重要.