27

Rubyでは、標準的な規則として、メソッド名の末尾に疑問符を使用して、メソッドがブール結果を返すことを示します。

[].empty?   #=> true 

別の標準的な規則は、メソッドが破壊的である場合(つまり、元のデータを変更する場合)、感嘆符でメソッド名を終了することです。

mylist.sort! # sort mylist in-place

最近、Schemeで使用されているのと同じ規則を見てきました。他のどの言語がこの規則を使用/サポートしているのだろうか?これらまたは他の言語による命名に一般的に使用される他の特殊文字はありますか?

4

4 に答える 4

19

もちろん、その答えは言語(および言語文化)に固有のものです。

たとえば、言語に応じて、次のすべてが適切です:empty-p、empty?、empty、is_empty、またはisEmpty。(もちろん、これらの例は包括的ではありません)。

元の質問の例は、Rubyからのものです。と !終了するメソッド名は、必要に応じて受け入れられます。この受け入れは、1)文法の記号ターミネータとして簡単にアクセスできる2)?の使用から来ています。と !標準ライブラリにあります。ただし、注意が必要です。「副作用」を暗示するために普遍的に使用されることはなく、通常は代替形式(save / save !、 sort / sort!など)にのみ存在します。!を持たない副作用を実行するメソッドは圧倒的に多くあります。プレフィックス。

個人的に、私が言語を設計しているなら、私は許可しますか?、!および'は、シンボル名の引用符で囲まれていない有効な末尾文字です。Scalaなど、一部の言語では完全な記号のエスケープが許可されていますが、使用するために引用符で囲む必要があるため、通常、このような記号は避けられます。

// in Scala, esp. with Java-compat, the last form is generally used although
// the first two are perfectly valid -- do what makes sense in the language
foo.`empty?`
foo.empty_?
foo.isEmpty

ローマにいるとき...

  • Scala-empty?またはempty_?(一般的ではありません)
  • C / C ++ / JS / Java / Python / Perl-いいえ?また !識別子で; JS/Javaは$を許可します。$はPerlの印章です
  • C / C ++ / Perl / JS-空中で手を上げますか?
  • C#-IsEmpty(メソッドまたはプロパティ)またはEmpty(プロパティ)
  • Python-Guido-guideごとにis_emptyまたはisEmpty(通常はlenプロトコルif not len(foo): "empty!":)
  • Java-言語ガイドごとのisEmpty
  • Ruby-特別な末尾?と !(引用?)
  • JS-間接的な識別子アクセス:obj ["empty?"](これには一般的ではありません)
  • Lisp(従来型):述語のempty-p; リーダー/引用のバリエーション
  • ジュリア-追加!引数を変更する関数に

修正や追加を見てうれしいです-バケツのほんの一滴です。

于 2009-10-21T03:00:14.253 に答える
3

私は関数名の特殊文字の大ファンではありませんが、ファイル名にスペースを入れているのを見つけた人は誰でも、痛みを和らげるために濡れたセロリの棒で殴り殺します:-)

バリアントは、のようなものを使用して、バリアントを使用し?て同じように簡単に実行できます。isEmpty()!sortInPlace()

英語は句読点がなくても非常に適応力のある言語です。

どちらの場合でも、私の選択した言語(CおよびJava)は、他のあらゆる種類のものに句読点を使用します。それらを識別子に含めると、字句解析が悪夢になります。

于 2009-10-21T02:54:54.387 に答える
1

C#のメソッド名(または任意の識別子)の前に「@」を付けると、通常予約されているキーワードを使用してそのメソッドに名前を付けることができます。

void null() {}
// Invalid token 'null' in class, struct, or interface member declaration

void @null()
// compiles

これをしないでください。これは主に、データセットなどのマシンで生成されたコード用です。 トピックに関するMSDNページ。

于 2009-10-21T02:31:58.660 に答える
-2

Javascriptを言語として数えると、多くのフレームワークは「セレクター」を意味する「$」文字を使用しているようです。たとえば$("id-of-some-item")、Prototype.jsまたは$("#id-of-some-item")jQueryで使用して、書き込まれたタグを選択できます<div id="id-of-some-item">。これらの選択関数の使用は、実際には非常に複雑で強力です(興味がある場合は、prototypejs.orgおよびjquery.comでサポートドキュメントを確認してください)が、意味的にはあなたが行ったものと意味的に類似していると私が考えることを実行することになります。示されています。

繰り返しますが、これはJavascriptを言語として数えることを前提としています。

于 2009-10-21T02:26:54.040 に答える