对于给定的迭代器集a,b,c,可以成功地将它们链接起来a.chain(b).chain(c).由于我试图编写的CLI util提供了一个路径向量(字符串, - dirs"a/b/c""d/e/f"...),我想walkd_dir在每个上使用然后将它们连在一起.我的第一个想法是:
fn main() {
let a = 0..3;
let b = 3..6;
let c = 6..9;
let v = vec![b, c];
v.iter().cloned().fold(a, |acc, e| acc.chain(e));
}
Run Code Online (Sandbox Code Playgroud)
<anon>:6:40: 6:52 error: mismatched types:
expected `core::ops::Range<_>`,
found `core::iter::Chain<core::ops::Range<_>, core::ops::Range<_>>`
(expected struct `core::ops::Range`,
found struct `core::iter::Chain`) [E0308]
<anon>:6 v.iter().cloned().fold(a, |acc, e| acc.chain(e));
Run Code Online (Sandbox Code Playgroud)
另一个尝试http://is.gd/ZKdxZM,虽然a.chain(b).chain(c)有效.
需要在log-lin图中注释一行.如何使文本字符串(此处为"0000000000")与其注释的行平行?
require(ggplot2)
require(scales)
x=c(1:10)
y=2^x
data_line <- data.frame(x=3,xend=8,y=2^8,yend=2^9)
line <- geom_segment(data=data_line,aes(x=x,xend=xend,y=y,yend=yend),color="blue")
angle= atan((data_line$yend - data_line$y) / (data_line$xend - data_line$x))*(180/pi)
text <- annotate("text",x=data_line$x,y=data_line$y,label="0000000000",angle=angle)
qplot(x=x,y=y,geom="line") + line + text + scale_y_log10()
Run Code Online (Sandbox Code Playgroud) 首先,我没有CS的经验,而Clojure是我的第一语言,所以请原谅如果以下问题有解决方案,这对于程序员来说是很明显的.
问题的摘要如下:一个人需要在未知时间随意创建未知但符号的原子.我的方法围绕a)临时存储原子的名称作为原子本身的字符串; b)将这些字符串更改为具有函数的符号; c)使用函数添加和创建新原子.问题与步骤"c"有关:调用函数不会创建新原子,但使用它的主体会创建它们.
REPL中采取的所有步骤如下(注释遵循代码块):
user=> (def atom-pool
#_=> (atom ["a1" "a2"]))
#'user/atom-pool
Run Code Online (Sandbox Code Playgroud)
'atom-pool是将中间原子作为字符串存储的原子.
user=> (defn atom-symbols []
#_=> (mapv symbol (deref atom-pool)))
#'user/atom-symbols
user=> (defmacro populate-atoms []
#_=> (let [qs (vec (remove #(resolve %) (atom-symbols)))]
#_=> `(do ~@(for [s qs]
#_=> `(def ~s (atom #{}))))))
#'user/populate-atoms
Run Code Online (Sandbox Code Playgroud)
'populate-atoms是定义那些原子的宏.注意,目的(remove #(resolve %) (atom-symbols))是仅创建尚未存在的原子.'atom-symbols读取'atom-pool并将其内容转换为符号.
user=> (for [s ['a1 'a2 'a-new]]
#_=> (resolve s))
(nil nil nil)
Run Code Online (Sandbox Code Playgroud)
这里确认到目前还没有'a1','a2','a-new'原子.
user=> (defn new-atom [a]
#_=> (do
#_=> (swap! atom-pool conj a)
#_=> (populate-atoms)))
#'user/new-atom …Run Code Online (Sandbox Code Playgroud)