YAML: YAML の文字列には引用符が必要ですか? 質問する

YAML: YAML の文字列には引用符が必要ですか? 質問する

Rails プロジェクトの国際化のために YAML 辞書を書こうとしています。しかし、ファイルによっては文字列が二重引用符で囲まれているのに、そうでないファイルもあるので、少し混乱しています。考慮すべき点がいくつかあります。

  • 例1- すべての文字列に二重引用符を使用します。
  • 例2- 文字列(最後の 2 つを除く)には引用符を使用しません。
  • YAML クックブック文字列を二重引用符で囲むと、ASCII 文字と Unicode 文字をエスケープして表すことができます。これは、一部の文字をエスケープしたい場合にのみ二重引用符を使用する必要があることを意味しますか? そうであれば、最初の例ではなぜどこでも二重引用符が使用されているのでしょうか? 統一性やスタイル上の理由のためだけでしょうか?
  • 例 2 の最後の 2 行で!は非特定タグが使用されていますが、例 1 の最後の 2 行では使用されていません。どちらも機能します。

私の質問は、YAML でさまざまな種類の引用符を使用するためのルールは何ですか?

次のように言えるでしょうか:

  • 一般的に、引用符は必要ありません。
  • 文字をエスケープしたい場合は二重引用符を使用します。
  • 一重引用符を使用する!場合...?!?

ベストアンサー1

質問で引用されている YAML クックブックを簡単に確認し、いくつかテストした後、私の解釈は次のとおりです。

  • 一般的に、引用符は必要ありません。
  • 文字列を強制するには引用符を使用します。たとえば、キーまたは値が であるが10、Fixnum ではなく String を返すようにしたい場合は、'10'または と記述します"10"
  • 値に特殊文字が含まれる場合は引用符を使用します(例:: {、、、、、、、、、、、、、、、、、、、、、) 。}[],&*#?|-<>=!%@\
  • 一重引用符を使用すると、文字列にほぼすべての文字を入力でき、エスケープ コードを解析しようとしません。'\n'文字列として返されます\n
  • 二重引用符はエスケープ コードを解析します。"\n"改行文字として返されます。
  • !ruby/sym感嘆符は、たとえばRuby シンボルを返すメソッドを導入します。

私にとっては、必要がない限り引用符を使用せず、エスケープ コードを特に処理する必要がない限り一重引用符を使用するのが最善の方法のように思えます。

アップデート

「Yes」と「No」は引用符(一重または二重)で囲む必要があります。そうしないと、TrueClass と FalseClass の値として解釈されます。

en:
  yesno:
    'yes': 'Yes'
    'no': 'No'

おすすめ記事