5

私はさびについてのブログを読んでいて、たとえばこの閉鎖は私に疑問を抱かせました:

fn each<E>(t: &Tree<E>, f: &fn(&E) -> bool) {
if !f(&t.elem) {
    return;
}

for t.children.each |child| { each(child, f); }
}

なぜそれができなかったのですか:

each<E>(t: &Tree<E>, f: &(&E) -> bool) {
if !f(&t.elem) {
    return;
}

for t.children.each |child| { each(child, f); }
}

たぶん、これを防ぐクラスシステムに何かが欠けているのでしょう。

4

2 に答える 2

5

一部の fn は無関係に見えるかもしれませんが、これには「grep」を使用して錆びたコードを非常に簡単にナビゲートできるという副次的な利点があります。関数 'foo' の定義を見つけるには、単純に "fn\sfoo" を grep します。ソース ファイルの主な定義を確認するには、"(fn|struct|trait|impl|enum|type)" を grep するだけです。

これは、さびが IDE を欠いているこの初期段階で非常に役立ち、おそらく他の方法で文法を単純化します。

文法を C++ よりも曖昧にしないようにすることが主要な目標です。これにより、ジェネリック プログラミングが容易になり (正しく解析するために、コンパイル ユニットに特定の順序で多くの定義を持ち込む必要がなくなります)、将来のツールが容易になるはずです。'fn' を自動挿入する機能は、現在の C++ IDE が対処しなければならない多くの問題と比較して、非常に簡単です。

于 2013-09-25T23:22:05.610 に答える