应用程序在Mongo中保留Guid字段,最终存储为BinData:
"_id" : new BinData(3, "WBAc3FDBDU+Zh/cBQFPc3Q==")
Run Code Online (Sandbox Code Playgroud)
在这种情况下的优点是紧凑性,当需要对应用程序进行故障排除时会出现缺点.Guids通过URL传递,并且在转到Mongo控制台时不断将它们转换为BinData有点痛苦.
除了增加尺寸外,将Guid存储为字符串有什么缺点?一个优点是易于故障排除:
"_id" : "3c901cac-5b90-4a09-896c-00e4779a9199"
Run Code Online (Sandbox Code Playgroud)
这是C#中持久化实体的原型:
class Thing
{
[BsonIgnore]
public Guid Id { get; set; }
[BsonId]
public string DontUseInAppMongoId
{
get { return Id.ToString(); }
set { Id = Guid.Parse(value); }
}
}
Run Code Online (Sandbox Code Playgroud) "纯粹的递归"是一个虚构的术语,请原谅.
以下是使用两种不同递归方法的两个示例.一个用户的使用指南是什么?
(defn take-while
"Returns a lazy sequence of successive items from coll while
(pred item) returns true. pred must be free of side-effects."
{:added "1.0"
:static true}
[pred coll]
(lazy-seq
(when-let [s (seq coll)]
(when (pred (first s))
(cons (first s) (take-while pred (rest s)))))))
(defn take-last
"Returns a seq of the last n items in coll. Depending on the type
of coll may be no better than linear time. For vectors, see also subvec."
{:added "1.1"
:static true} …Run Code Online (Sandbox Code Playgroud) 给定一个列表,我需要返回一个唯一项列表.我想看看是否有比我提出的更多Pythonic方式:
def unique_lists(l):
m = {}
for x in l:
m[x] = (m[x] if m.get(x) != None else []) + [x]
return [x for x in m.values()]
print(unique_lists([1,2,2,3,4,5,5,5,6,7,8,8,9]))
Run Code Online (Sandbox Code Playgroud)
输出:
[[1], [2, 2], [3], [4], [5, 5, 5], [6], [7], [8, 8], [9]]
Run Code Online (Sandbox Code Playgroud) 寻找一种从具有副作用的函数生成返回值集合的方法,以便我可以将其提供给take-while.
(defn function-with-side-effects [n]
(if (> n 10) false (do (perform-io n) true)))
(defn call-function-with-side-effects []
(take-while true (? (iterate inc 0) ?)))
Run Code Online (Sandbox Code Playgroud)
UPDATE
以下是Jan回答后的内容:
(defn function-with-side-effects [n]
(if (> n 10) false (do (println n) true)))
(defn call-function-with-side-effects []
(take-while true? (map function-with-side-effects (iterate inc 0))))
(deftest test-function-with-side-effects
(call-function-with-side-effects))
Run Code Online (Sandbox Code Playgroud)
运行测试不会打印任何内容.使用doall结果内存不足异常.
我可能有一个最简单的测试失败了Clojure新手的相当混乱的消息.
(ns leiningen.booltest
(:use clojure.test))
(with-test
(defn bool-function []
(true))
(is (= (bool-function) true))
)
ERROR in (bool-function) (booltest.clj:10)
expected: (= (bool-function) true)
actual: java.lang.ClassCastException: java.lang.Boolean cannot be cast to clojure.lang.IFn
Run Code Online (Sandbox Code Playgroud) 我想将一个已定义的函数转换为匿名函数.我怎么做?以下函数返回序列中的最后一个元素:
(defn lastt [l]
(cond
(nil? (next l)) l
:else
(lastt (next l))))
Run Code Online (Sandbox Code Playgroud)
如何将其变成fn表格?
PS:我知道last功能,这只是一个练习.