小编ife*_*ett的帖子

如何Iterator ::链接迭代器的向量?

对于给定的迭代器集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)

http://is.gd/hfNQd2,返回

<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)有效.

rust

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

如何使geom_text()在log-lin范围内与geom_segment()并行?

需要在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)

r ggplot2

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

为什么在这个例子中调用(f arg)并调用f的主体显然产生不同的结果?

首先,我没有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)

clojure

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

标签 统计

clojure ×1

ggplot2 ×1

r ×1

rust ×1