区切り文字としてのカンマと区切り文字としてのカンマ


13

、このビデオ、スピーカーは言います:

「コンマの仕組みについて混乱する人もいます。コンマは区切り文字ではなく区切り文字とすべきだと考えています。どちらの方法でも考えることができます。」

区切り記号と区切り記号(ある場合)の違いがわかりません。ビデオの含意は、現在(末尾のコンマが有効である)、区切り記号ではなく区切り記号と考えることができるということです...

ところで問題の言語はJavaScriptです。私の理解では、コンマトークンには2つの意味があります。

  • 演算子として(めったに使用されません)
  • セパレーターとして(引数およびパラメーターリスト、配列およびオブジェクトリテラルなど)

コンマ区切り文字がこれにどのように収まるのかわかりません...


2
なぜこれが重要なのですか?
jfriend00

7
@ jfriend00用語の区切り文字とセパレータとの間に差がある場合、私はそれを知ってほしい...私はものを知りたい:)
サイムVIDAS

3
@ jfriend00ビデオを見る。IEの人々があなたほど狭く考えていなかった場合は、多分私達はまた別のJavaScriptポータビリティの混乱状態を持っていないでしょう...
ヤニス

3
@ŠimeVidas良い質問です。ところで、スピーカーは、JSONの普及とJavaScriptの作者:The Good Partsで知られる、YahooのシニアJavaScriptアーキテクトであるDouglas Crockford です。特にCrockfordのビデオを見るときは、重要ではないものに息を浪費することはめったにないので、細部に注意を払うことをお勧めします。
ヤンニス

1
@YannisRizosうん、私はクロックフォードを知っています。彼は素晴らしい教育者です。:)
サイムVIDAS

回答:


15

コンマを区切り文字と見なす場合は、シーケンスの2つの項目の間にコンマを使用してそれらを区切ります。区切り文字と見なす場合は、各項目の後に配置して、項目の終了位置を示します。以下の例を参照してください。

区切り記号としてのカンマ

var myCars = ["Saab", "Volvo", "BMW" ];

区切り文字としてのカンマ

var myCars = ["Saab", "Volvo", "BMW", ];

上記の両方の配列の例が有効であるため、ビデオではセパレータと区切り文字の両方としてコンマを考えることができると言っていると思います。一方、Javascriptでは、コンマを関数のパラメーターリストの区切り記号としてのみ使用できます。たとえば、

foo(a, b, c) // separator, OK

有効です

foo(a, b, c,) // delimiter, NOT OK!

有効ではない。

編集

私の知る限り理解し、Wikipediaのページによると、セパレータは、特殊なケースで区切り。つまり、境界をマークする必要のある異なるテキスト領域の間に置かれます。実際、ウィキペディアのページでは、区切り文字の使用例としてカンマ区切りの値を指定しています。したがって、一般的に、区切り文字はさまざまな方法で使用できます。マークするテキスト部分の前、後、両側に使用できます。

解釈した理由 Javascriptコンテキストで区切り文字を「アイテムの後に配置されるマーカー」は、C、C ++、およびJavaでも有効な配列リテラルの例によるものです(少なくとも1つの質問を見たと思います)このトピックに関するスタックオーバーフロー)。

文字の類似した異なる使用の別の例は、ステートメント区切り文字(C、C ++、Java、Ada、...)として、およびステートメント区切り文字(Pascal)としてのセミコロンの使用です。だから

if (a > 0)
    printf("Positive\n");
else
    printf("Non positive\n");

正しいCコードですが、

IF a > 0 THEN
    WriteLn('Positive'); (* Syntax error here! *)
ELSE
    WriteLn('Non positive');

正しいPascalコードではありません。

たぶんターミネータデリミタよりも良い/曖昧でない用語でしょうか?たとえば、次のように引用を定式化できます。「コンマの動作について混乱する人もいますアイテムセパレータではなくアイテムターミネータであると考えている人がいます。


はい、パラメータリストではコンマを区切り文字として使用する必要がありますが、配列リテラルではコンマを区切り文字または区切り文字として使用できます。または、素人の言葉で言うと、最後の配列要素の後にコンマを置くことができますが、そうする必要はありません。
サイムVIDAS

あなたの答えは私の質問からの引用を非常によく説明していますが、「デリミタ」のウィキペディアのページにはさまざまな定義があります。その記事によると、区切り文字領域の境界指定します。したがって、上記の質問の「区切り文字としてのコンマ」の例はコンマフィールド区切り文字と呼ばれますが、「区切り文字としてのコンマ」の例はそのWikiページのどこにも表されていません。
サイムVIDAS

@ŠimeVidas-ウィキペディアは、他の参考資料と同様に参考資料であり、唯一の参考資料ではありません。
マイケルライリー-

@CapeCodGunnyはい、直面している定義があることを指摘しています。他の参考文献の定義も見てみたいです。
サイムVIDAS

7

2つの値の間にセパレーターが置かれ、それらが分離されます。

one,two,three

区切り文字はフィールドを区切ります-それは両側にあります。

,one,two,three,

このようにすると、別々のフィールドを抽出できる限り、ほとんど違いはありません。

これは、javascriptなどのプログラミング言語でコンマを使用する場合とはまったく異なる問題です。文字列内の値を区切る/分離することです。


1
ああ、これは理にかなっています。
サイムVIDAS

デリミタの説明に同意しません。あなたの説明に基づいて、それは、1、2、3になります。現在、区切り文字は両側にあります。
マイケルライリー-別名ガニー

1
@CapeCodGunny-あなたは誤解しています。私が与えた例では、値の前後にコンマがあります。文字列の最初と最後にないコンマは、終了区切り文字開始区切り文字として機能します。
オデッド

@Odedこのウィキペディアの記事では、さまざまな定義を提供しています。それによれば、最初の例はフィールド区切り文字になりますが、2番目の例はその記事ではまったく示されていません。
サイムVIDAS

1
注意の言葉!var myNumbers = ['one','two','three', ];(最後にカンマ)3のように配列の長さを与えるが、なぜなら前にコンマであろうvar myNumbers = [,'one','two','three'];4と長さを与える
RBT
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.