UPD(私のコメントから):値の不在を示すためにマジックナンバーを選択することは確かに良い習慣ではありません。ただし、このマジックナンバーがいくつかの算術演算の結果として表示されないことを完全に確信できる場合を除きます(これは一般的に当てはまります)。int
したがって、ここでの最善のアプローチは、 (eg )よりも幅の広い型を使用するか、関数にNumber
フラグ(Boolean
value)を渡してint
、実際の値がないことを示すことです。選択は、渡された値が不可欠であるという事実の重要性を強調するかどうかによって異なります。
引数の型を拡張することに慣れている場合は、次を使用して実行する必要がNaN
あります。
function setMyValue (myVar : Number = NaN) : void
{
if ( isNaN(myVar) )
{
/* Generate a value for myVar */
}
else
{
/* Use the supplied value for myVar */
}
}
これは、技術的に正確であると同時に、より安定しています。また、コンパイル時に強く入力できるようになり、を使用する場合のように奇妙なバグが発生することはありませんObject
。
int
答えの1つが示唆しているように、これは機能しないことに注意してください。int
は数値のみNaN
であり、0に強制変換されます。typeを使用する必要がありますNumber
。
パフォーマンスが心配な場合は、そうしないでください。またはNumber
の代わりに使用することは一般的にOKです。int
uint
UPD:引数を整数にする必要があることを明示的にマークしたい場合は、追加のフラグと正確な型を使用するだけです。これははるかに明確です。
function setMyValue (isIntValueSupplied : Boolean = false, intValue : int = 0) : void
{
if ( isIntValueSupplied )
{
/* Generate or use a default value of intValue */
}
else
{
/* Use the supplied value for intValue */
}
}
もう1つのオプションは、MaybeInt
整数値とフラグ(実際に初期化されたかどうかに関係なく)を保持する追加の値を使用して独自の型を定義することです。そうすれば、値が整数であるか値がないことを明確に示すことができます。ただし、このアプローチは少しかさばる可能性があります。