一个Comparator在我使用我TreeMap打破了我的意图的行为TreeMap.看下面的代码:
TreeMap<String, String> treeMap = new TreeMap<>(new Comparator<String>() {
public int compare(String o1, String o2) {
return o1.toLowerCase().compareTo(o2.toLowerCase());
}
});
treeMap.put("abc", "Element1");
treeMap.put("ABC", "Element2");
Run Code Online (Sandbox Code Playgroud)
我认为我所做的是我创建了一个按键排序的地图,不区分大小写.两个不同的元素具有不相等的键(abc和ABC),其比较将返回0.我期待这两个元素的随机排序.然而,命令:
System.out.println("treeMap: " + treeMap);
Run Code Online (Sandbox Code Playgroud)
导致:
treeMap: {abc=Element2}
Run Code Online (Sandbox Code Playgroud)
钥匙abc已重新分配价值Element2!
任何人都可以解释这是怎么发生的,如果它是一个有效的,记录在案的行为TreeMap?
我在OSX 10.6上,目前有平台2010.2.0.0.我应该只在顶部安装2011.2.0.1还是有更顺畅的更新机制?
我想从haskell访问我本地(mac)机器上的现有postgres数据库.
我可以看到很多关于hackage的postgres包.这可能是我最容易使用的?
我正在用haskell编写一些shell脚本,我正在gitbash中运行,但是我还希望能够从这些脚本中使用其他一些现有的脚本.
例如,我想运行maven目标或做一个git pull,但不必专门与这些工具集成.
有没有办法做到这一点?
有人可以向我解释为什么Rc<>不是Copy吗?
我正在编写使用大量共享指针的代码,并且不得不一直打字,.clone()这让我很紧张.
在我看来,Rc<>应该只是一个指针,这是一个固定的大小,所以类型本身应该是Sized,因此Copy,对吗?
我错过了什么吗?
我正在慢慢地将flowType工作到我的代码中,但我正在努力解决一个概念.
如何指定对象的未知动态命名属性的类型?
例如,我的用户对象可能包含一个包含具有唯一键的组织的对象.
我该如何定义?
export type User = ?{
currentOrg: string,
displayName?: string,
email: string,
emailVerified: boolean,
newAccount: boolean,
organisations?: {
UNKNOWNKEY?: string {
orgData1: string,
orgData2: string,
}
},
uid: string,
photoUrl?: string,
};
Run Code Online (Sandbox Code Playgroud)
真的很感激任何帮助.谢谢!
考虑以下玩具示例:
use std::cmp::Ordering;
pub trait SimpleOrder {
fn key(&self) -> u32;
}
impl PartialOrd for dyn SimpleOrder {
fn partial_cmp(&self, other: &dyn SimpleOrder) -> Option<Ordering> {
Some(self.cmp(other))
}
}
impl Ord for dyn SimpleOrder {
fn cmp(&self, other: &dyn SimpleOrder) -> Ordering {
self.key().cmp(&other.key())
}
}
impl PartialEq for dyn SimpleOrder {
fn eq(&self, other: &dyn SimpleOrder) -> bool {
self.key() == other.key()
}
}
impl Eq for SimpleOrder {}
Run Code Online (Sandbox Code Playgroud)
这不编译.它声称在实施过程中存在一个终身问题partial_cmp:
error[E0495]: cannot infer an appropriate lifetime due …Run Code Online (Sandbox Code Playgroud) 我有树结构的类别.我试图通过为每个人定义父母来将他们联系在一起.(我无法弄清楚如何调用该属性parent所以它只是暂时category,但它意味着父母).
class Category < ActiveRecord::Base
has_one :category # the parent category
end
Run Code Online (Sandbox Code Playgroud)
但这种关系最终走错了方向.
getter函数在子类别上(正确)但category_id存储在父类中:
parent = Category.create(:name => "parent")
child = Category.create(:name => "child", :category => parent)
parent.id # 1
child.id # 2
child.category_id # nil
parent.category_id # 2
child.category.name # "parent" (!!)
Run Code Online (Sandbox Code Playgroud)
父母需要能够有多个孩子,所以这不会起作用.
假设我有以下常量字符串:
export default const FOO = 'FOO'
假设我在流注释文件中导入它,如下所示:
import FOO from '../consts/Foo'
然后我有一个功能:
const example = (foo : string) : {| type: FOO, foo: string |} => {
return {type: FOO, foo: foo}
}
Run Code Online (Sandbox Code Playgroud)
这不是类似于:
6: const example = (foo : string) : {| type: FOO, foo: string |}=> {
^^^^^^^^^^^^^^ string. Ineligible value used in/as type annotation (did you forget 'typeof'?)
6: const example = (foo : string) : {| type: FOO, foo: string |}=> {
^^^^^^^^^^^^^^ FOO
Run Code Online (Sandbox Code Playgroud)
所以我的问题是: …
这在任何语言中都应该是一项微不足道的任务.这不适用于Rust.
use std::collections::HashMap;
fn do_it(map: &mut HashMap<String, String>) {
for (key, value) in map {
println!("{} / {}", key, value);
map.remove(key);
}
}
fn main() {}
Run Code Online (Sandbox Code Playgroud)
这是编译器错误:
error[E0382]: use of moved value: `*map`
--> src/main.rs:6:9
|
4 | for (key, value) in map {
| --- value moved here
5 | println!("{} / {}", key, value);
6 | map.remove(key);
| ^^^ value used here after move
|
= note: move occurs because `map` has type `&mut std::collections::HashMap<std::string::String, std::string::String>`, which does …Run Code Online (Sandbox Code Playgroud) haskell ×3
rust ×3
flowtype ×2
javascript ×2
comparator ×1
ecmascript-6 ×1
ffi ×1
hashmap ×1
iteration ×1
java ×1
lifetime ×1
mutability ×1
postgresql ×1
ruby ×1
shell ×1
syntax ×1
traits ×1
types ×1
upgrade ×1