2017-06-01 12 views
1

私はクラス内にベアボーン関数を持っていますが、これは唯一の関数です。関数の引数が "エラーが予想されるパターン、キーワード" mod "が見つかりました。

pub fn getfreq(note: char, mod: char, oct: i8) {} 

そして、私は次のエラーを取得する:

error: expected pattern, found keyword `mod` 
--> src/main.rs:1:28 
    | 
1 | pub fn getfreq(note: char, mod: char, oct: i8) {} 
    |       ^^^ 

は関連mod何かの錆ですか?私はちょうど '修飾子'を省略するためにそれを使用したいと思います。

+0

「mod」は[modules](https://doc.rust-lang.org/book/crates-and-modules.html#defining-modules)の略です。 –

+0

ああダムニ!私はそれを知っていました。しかし、私はパラメータmodを呼び出すための方法はありません? – VikingPingvin

+1

意見:あなたは 'modifier'と呼ぶべきです。変数名と関数名はドキュメントの一部です。あいまいな略語を構成しないでください。 'oct 'は' octal'と 'octave'のどちらか短いですか?このコードに3ヶ月後に戻ると、 'get_frequency'を' getfreq'に短縮したことを覚えておく前に、あなたのソースコードを無駄に「周波数」を探し出すのにどれくらい時間がかかりますか?ショートネームは秒(議論の余地がある)を節約するかもしれませんが、記述的な名前は長期的には何分も節約することができます。 – trentcl

答えて

5

I just want to use it for abbreviating 'modifier'.

modはすでに"module"を短縮するために錆の言語で使用されています。したがって、キーワード - 特定の文字セットは他のものに使用できません。別の名前を選ぶ必要があります。

many keywords in Rustがあります。言語固有の目的以外では使用しないでください。

+0

まだ、関数の引数の中にモジュールを定義するのは馬鹿げているようです。 – VikingPingvin

+4

@VikingPingvin引数の中にモジュールを定義することはできません。コンパイラがどのように動作するかは単なるアーティファクトです。なぜ私は、キーワードのような概念がプログラミング言語を人間、コンパイラ、エディタなどで扱いやすくするのかを理解するために、レクサー/パーサーを書くことをお勧めします。 – Shepmaster

関連する問題