我正在尝试将 a 转换HashSet<String>为一个排序向量,然后可以join用逗号进行编辑:
use std::collections::HashSet;
fn main() {
let mut hs = HashSet::<String>::new();
hs.insert(String::from("fee"));
hs.insert(String::from("fie"));
hs.insert(String::from("foo"));
hs.insert(String::from("fum"));
let mut v: Vec<&String> = hs.iter().collect();
v.sort();
println!("{}", v.join(", "));
}
Run Code Online (Sandbox Code Playgroud)
这不会编译:
use std::collections::HashSet;
fn main() {
let mut hs = HashSet::<String>::new();
hs.insert(String::from("fee"));
hs.insert(String::from("fie"));
hs.insert(String::from("foo"));
hs.insert(String::from("fum"));
let mut v: Vec<&String> = hs.iter().collect();
v.sort();
println!("{}", v.join(", "));
}
Run Code Online (Sandbox Code Playgroud)
我明白为什么我不能加入Vec<&String>,但我怎样才能将 转换HashSet为 a Vec<String>,以便它可以加入?
在 Rust 中打印由空格分隔的迭代器的惯用方法是什么?似乎并不适用,因为迭代器Args返回String值,不像迭代器HashSet返回&String …
我是一个Clojure新手.我想获得两份卡套装的副本.我能想到的非DRY方式是
(def suits [:clubs :diamonds :hearts :spades])
(def two-times (concat suits suits))
Run Code Online (Sandbox Code Playgroud)
必须有更多功能的方式(即使它需要更多的字符:-)).如果我想要N次怎么办?有什么建议?
我试过的所有事情,比如
(replicate 2 suits)
Run Code Online (Sandbox Code Playgroud)
导致两个单独的向量:
([:clubs :diamonds :hearts :spades] [:clubs :diamonds :hearts :spades])
Run Code Online (Sandbox Code Playgroud)
如何"压扁"结构?
在Clojure程序中,我有一系列数字:
(2 3 4 6 8 1)
Run Code Online (Sandbox Code Playgroud)
我想找到项目顺序的最长子序列:
(2 3 4)
Run Code Online (Sandbox Code Playgroud)
我假设它将涉及(take-while ...)或(reduce ...).
有任何想法吗?
澄清:我需要最长的连续项目列表.我更确定,更容易.感谢我解决我最初提出的更难的问题.
我正在为我的"main"类编写构造函数.它做的第一件事是调用一个方法来使用commons-cli来解析命令行.如果parseOptions方法返回false,则发生错误,构造函数应退出.
我尝试编写以下代码
if (!parseOptions(args)) return
Run Code Online (Sandbox Code Playgroud)
但编译器抱怨我有一个"返回方法定义之外的语句".
如果没有调用System.exit(1)或反转布尔值(并将所有其余的逻辑放在if语句中,有没有办法从构造函数中"提前"返回?
我想我可以让parseOptions方法抛出IllegalArgumentException并在我的Main对象中捕获它.
谢谢.
我试图找到一种初学Java对象的Clojure-idiomatic方法.我有以下代码:
(let [url-connection
(let [url-conn (java.net.HttpURLConnection.)]
(doto url-conn
(.setDoInput true)
; more initialization on url-conn
)
url-conn)]
; use the url-connection
)
Run Code Online (Sandbox Code Playgroud)
但它似乎很尴尬.
有什么更好的方法来创建HttpURLConnection对象并在以后在代码中使用它之前对其进行初始化?
更新:这似乎(doto ...)可以派上用场:
(let [url-connection
(doto (java.net.HttpURLConnection.)
(.setDoInput true)
; more initialization
))]
; use the url-connection
)
Run Code Online (Sandbox Code Playgroud)
根据doto文档,它返回它正在"做"的值.
java.util.Map.Entry在Clojure 1.2中,嵌套静态内部类的类型提示的语法是什么?
我都尝试^Map/Entry和^Map.Entry,也不进行编译.
正如大多数Java程序员所知,Swing GUI的更新只应在AWT事件调度线程上完成,建议在"工作"线程上执行长时间运行的进程,并使用SwingUtilities.invokeAndWait()或将更新发送到事件调度线程SwingUtilities.invokeLater().
在长时间运行的过程完成后,如何阻止用户继续执行应用程序?你是否使控件灰显,然后让工作线程使用SwingUtilities上面提到的调用重新启用它们?
有更好的替代模式吗?
我有一个Java gettor方法,如下所示:
import java.util.Date;
//...
public Date getSomeDate() {
return someDate;
}
Run Code Online (Sandbox Code Playgroud)
和Findbugs报告这暴露了一个可变对象:"可以通过返回对可变对象的引用来公开内部表示".我将代码更改为:
import java.util.Date;
//...
public Date getSomeDate() {
return new Date(someDate.getTime());
}
Run Code Online (Sandbox Code Playgroud)
但Findbug仍然报告相同的漏洞.我还能做些什么来抑制/解决这个问题?我在IntellJ 10 Findbugs插件中运行Findbugs 1.3.9.
我试图让新的句柄defprotocol,reify等
我org.w3c.dom.NodeList从XPath调用返回,我想将其"转换"为ISeq.
在Scala中,我实现了一个隐式转换方法:
implicit def nodeList2Traversable(nodeList: NodeList): Traversable[Node] = {
new Traversable[Node] {
def foreach[A](process: (Node) => A) {
for (index <- 0 until nodeList.getLength) {
process(nodeList.item(index))
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
NodeList包括方法int getLength()和Node item(int index).
我如何在Clojure中做相同的操作?我希望我需要使用defprotocol.我需要定义哪些函数才能创建seq?
如果我使用loop和做一个简单,天真的转换到列表recur,我将最终得到一个非惰性结构.
我编写了一个REST服务器(在Java中使用RestEasy)和一个用Scala编写的单元测试套件.测试套件使用RestEasy提供的模拟服务器,并与每个Maven构建一起运行.
我想创建一个第二个功能测试套件,它调用一个实际的tomcat服务器并练习每个REST服务.我不希望这个新套件与每个构建一起运行,但只是按需,可能是用Maven的命令行参数控制的.
是否可以在Maven项目中创建多个独立的测试套件并禁用一些自动运行,或者我是否需要为此功能套件创建单独的Maven项目?如果这些测试与单元测试(不同目录)在同一个项目中,我如何隔离不同的功能套件代码?如何使用命令行参数运行选定的套件?
clojure ×5
java ×3
borrowing ×1
collections ×1
concurrency ×1
constructor ×1
date ×1
exit ×1
findbugs ×1
hashset ×1
idiomatic ×1
maven-2 ×1
reduce ×1
rust ×1
scala ×1
sequences ×1
swing ×1
type-hinting ×1
unit-testing ×1
vector ×1