30

INIファイルにブール値を設定するために使用されるさまざまな方法を見てきました。

  • variable = true
  • variable = 1
  • variable = on
  • variable = yes

最も標準的、一般的、および/または好ましい方法はどれですか?

4

2 に答える 2

16

INIファイルの仕様はありませんが、その価値が何であれ、私が知っている言語からのいくつかの実装の動作をリストします。

Pythonの組み込みconfigparserモジュールは、getboolean次のように動作するを提供します。

受け入れられる値...は、、、、、およびであり'1'、これによりこのメソッドは、、、、、、および、を返し、これにより、このメソッドは。を返します。'yes''true''on'True'0''no''false''off'False

parse_init_file一方、PHPでは、次のようになります。

文字列値「true」「on」、および「yes」はTRUEに変換されます。「false」「off」「no」、および「none」はFALSEと見なされます。

一方、.NETにはINI解析のサポートが組み込まれていませんが、最も人気のあるINI解析ライブラリであるini-parserは、値の自動解析をまったくサポートしておらず、すべてを文字列として返します。そのGettingStartedの例は、ブール値を.NETで解析することを示しています。これは、文字列をBoolean.Parse受け入れ、(任意の大文字で)他に何かが与えられた場合は例外をスローします。"true""false"

要約すると、INIパーサーのさまざまな実装間で、この質問に一貫性はまったくありません。

私がお勧めします:

  • 単一のパーサーを使用してINIを解析するだけの場合は、そのパーサーがどのように動作するかを確認し、特定の実装に合わせてINIを作成します。
  • 幅広いパーサーをサポートする必要がある場合(たとえば、言語の相互運用性のため)、INIをフォーマットとして完全に放棄するか、一部のパーサーが理解する魔法のブール値の使用を完全に避け、代わりにとに固執し1ます0
于 2018-01-13T12:17:19.430 に答える
5

これは、iniファイルのパーサーによって異なります。値は常に文字列です。

true / false:C#では、trueとfalseの文字列を直接boolに変換できます。読みやすさと簡単な変換に匹敵します。より少ないコード。

0/1:boolに変換する前に、文字列0と1をintに変換する必要があります。小さいiniファイルサイズ。読みにくい。より多くのコード。

yes/noおよびon/off私はif/switchステートメントを使用する必要があります。読み取り可能。より多くのコード。

私の好みの方法はtrue/falseです。オブジェクトはtrue/falseにシリアル化されます。これは、0/1として格納されている場合でも、sqlビットタイプでtrue/falseを使用できます。したがって、唯一の欠点はサイズであり、ほとんどのコンテキストでマイナーになる可能性があります。

于 2012-09-17T23:26:12.713 に答える