小编Dan*_*igk的帖子

正则表达式:"(^ |)"vs"(| ^)"

关于R中的正则表达式我有一个非常特殊的问题:

grepl("(|^)over","stackoverflow")
# [1] TRUE

grepl("(^|)over","stackoverflow")
# [1] FALSE

grepl("(^|x|)over","stackoverflow")
# [1] FALSE

grepl("(x|^|)over","stackoverflow")
# [1] FALSE

grepl("(x||^)over","stackoverflow")
# [1] TRUE
Run Code Online (Sandbox Code Playgroud)

为什么不对所有这些表达式进行评估TRUE

regex r

7
推荐指数
1
解决办法
225
查看次数

在"Clojure的喜悦"中的语境中的无条件构造

以下代码来自Fogus,Houser 的Clojure之乐(第二版)第8.1.1章:

(defn contextual-eval [ctx expr]
  (eval
   `(let [~@(mapcat (fn [[k v]] [k `'~v]) ctx)]   ; Build let bindings at compile time
      ~expr)))

(contextual-eval '{a 1, b 2} '(+ a b))
;;=> 3
(contextual-eval '{a 1, b 2} '(let [b 1000] (+ a b)))
;;=> 1001
Run Code Online (Sandbox Code Playgroud)

我真的不明白建筑的意义`'~v.有人可以详细说明吗?

在书中,只是说

创建的绑定使用有趣的`'~v模式在运行时获取构建的绑定的值.

例如

(contextual-eval '{a 1, b 2} '(+ a b))
Run Code Online (Sandbox Code Playgroud)

扩大到

(let [a '1 b '2] (+ a b)))
Run Code Online (Sandbox Code Playgroud)

我不明白为什么引用这些报价,它们有什么好处.

此外,我们有以下行为:

(contextual-eval '{a 1, b (+ a …
Run Code Online (Sandbox Code Playgroud)

clojure

6
推荐指数
1
解决办法
130
查看次数

标签 统计

clojure ×1

r ×1

regex ×1