2017-11-30 9 views
0

私は、%という接尾辞を持つクラスに名前を付けるという慣習があり、高次クラスとインスタンスを区別するのに役立ちます。一方でRacketの構造体の命名規則はありますか?

(define ingredient% 
    (class object% 
    (init-field name taste price color) 
    (super-new))) 

(define (total-price ingredients) 
    (for/sum (ingredient ingredients) 
    ;; here "ingredient" stands for the instance, not the class ingredient% 
    (get-field price ingredient))) 

私は構造体を必要とするとき、私は、構造体名と衝突しないインスタンスの名前を見つけるのに苦労しています。


だから私は、あまりにも構造体のための接尾辞を使用して開始しました:§。 シンボルはキーボードで簡単にアクセスできます。標準的なQWERTYのキーボードではないかもしれないので、後で$に変更します。

(struct ingredient§ (name taste price color)) 
(define ingredient (ingredient§ "Carrot" 'good 1.0 'orange)) 
(displayln (format "I'm making a ~a cake." (ingredient§-name ingredient))) 

どのようなシンボル、私は構造体のための接尾辞を使用する代わりに、変数からランダム母音を削除することの明確なインスタンス名を選択するあなたが自由に保つことがわかります。

もう一つの選択肢は、構造体接頭辞としてを使用し、クラスの接尾辞としてstructアクセサーが読み込み可能になるようにすることです:(%ingredient-name ingredient)。迅速GitHubの調査から判断

https://github.com/search?p=1&q=struct-out+language%3Aracket&type=Code

皆はかなり(それにも使用するのでキャメルケースを使用して、いくつかの学生を除く)として、ある構造体を使用しているように見えます。

したがって、インスタンスを構造型と区別するために何ができますか? 関連性はありますか?私は遠くに考えていますか?私はソフトウェアエンジニアリングでこれを尋ねるべきですか?

答えて

2

structには特別な表記法がありません。これは、structがクラス、ユニット、シグネチャ、コンポーネントなどの「スキームのような」ものである可能性がありますが、間違っている可能性があります。

structは、クラス、ユニットなどと同様のものを発明することで何も問題はありません。しかし、それは任意で個人的なので、おそらく文書化されるべきです。

関連する問題