我是观察者的新手,并在Angular2博客中尝试了Christoph Burgdorf的Observables的基本自动完成变体.运行此代码会产生:
EXCEPTION:TypeError:无法读取未定义的属性'Symbol(Symbol.iterator)'
在ingredientservice ... rawsearch发出REST get调用之后.警报还会弹出[object Object]消息.我已经验证了端点运行正常.
任何有关如何调试此建议的建议将不胜感激.
ingredientservice.ts等待对文本字符串进行更改,对其进行去抖动并执行REST调用以从端点获取自动完成匹配.
import {Injectable} from 'angular2/core';
import {Http} from 'angular2/http';
import {Observable} from 'rxjs/Observable';
import 'rxjs/add/operator/debounceTime';
import 'rxjs/add/operator/distinctUntilChanged';
import 'rxjs/add/operator/switchMap';
import 'rxjs/add/operator/map';
@Injectable()
export class IngredientService {
endpoint_url: String = "http://localhost:5000/ingredient/";
results: Observable<Array<string>>;
constructor(private http: Http) { }
search(terms: Observable<string>, debounceDuration = 400) {
return terms.debounceTime(debounceDuration)
.distinctUntilChanged()
.switchMap(term => this.rawSearch(term));
}
getData: Object[];
rawSearch(term: string) {
console.log(term);
this.http.get(this.endpoint_url + term)
.subscribe(
res => {
this.getData = res.json(); …Run Code Online (Sandbox Code Playgroud) 我已经为 PowerShell 安装了 PSReadline 模块,以便从 PowerShell 中的 Bash 获取按键绑定。我启用了 Vi-Mode,效果很好。
问题是:在 Vim 中我总是使用 j, k 退出插入模式。这意味着:我首先快速输入 j,然后输入 k。如果我真的想输入 j 和 k,那么我只需在输入 j 后等待超时即可。
如何在 PSReadline 的 Vi-Mode 中执行相同操作?我已经尝试过:Set-PSReadlineKeyHandler -Chord 'j', 'k' ViCommandMode,但后来我无法输入j或k了。有任何想法吗?
我正在阅读第二版Rust书中关于闭包的部分.在本节的最后,有一个练习来扩展Cacher之前给出的实现.我试了一下:
use std::clone::Clone;
use std::cmp::Eq;
use std::collections::HashMap;
use std::hash::Hash;
struct Cacher<T, K, V>
where
T: Fn(K) -> V,
K: Eq + Hash + Clone,
V: Clone,
{
calculation: T,
values: HashMap<K, V>,
}
impl<T, K, V> Cacher<T, K, V>
where
T: Fn(K) -> V,
K: Eq + Hash + Clone,
V: Clone,
{
fn new(calculation: T) -> Cacher<T, K, V> {
Cacher {
calculation,
values: HashMap::new(),
}
}
fn value(&mut self, arg: K) -> V { …Run Code Online (Sandbox Code Playgroud) 在我的代码中,我有很多带有Option<T>s 的结构.我需要在很多地方使用它们,所以我的代码充满了类似的结构访问car.engine.as_ref().unwrap().这对代码可读性来说很痛苦.
该Option<T>类型的默认函数是否相同?喜欢car.engine.get()?当然,我可以为每个结构成员编写访问器函数,但这对于一些非常基本的东西来说似乎有些过分.我做错了吗?
我不太了解宏,但是有没有办法用宏缩短它?