UPD:確かにあなたがこのマジックナンバーは、いくつかの結果として表示されません完全に確認することができない限り、値が存在しないことを示すために、いくつかのマジックナンバーを選ぶことをお勧めではありません算術(これは一般的に真実です)。つまり、int
(たとえばNumber
)より広いタイプを使用するか、機能するためにフラグ(Boolean
の値)とint
を渡して、実際の値が存在しないことを示します。選択肢は、合格値が不可欠であるという事実の重要性を強調したいかどうかにかかっていなければなりません。あなたは引数の型を拡張すると快適に感じる場合
、あなたはNaN
を使用して、これを行う必要があります。両方のより技術的に正確である
function setMyValue (myVar : Number = NaN) : void
{
if (isNaN(myVar))
{
/* Generate a value for myVar */
}
else
{
/* Use the supplied value for myVar */
}
}
をし、それはまた、より安定しています。また、コンパイル時に強く入力することができ、Object
のように奇妙なバグは発生しません。
答えの1つが示すように、これはint
とは機能しません。 int
はの数値がであり、NaN
は0に強制されます。Number
タイプを使用する必要があります。
パフォーマンスが心配な人は、しないでください。 int
またはuint
の代わりにNumber
を使用すると、通常OKです。
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 */
}
}
別のオプションは、例えば、追加の値を使用して独自の型を定義することですMaybeInt
。整数値とフラグ(実際に初期化されたかどうか)を保持します。そうすれば、その値が整数でなければならないことを明確に知らせることができます。no-value。しかし、このアプローチは少し大きめかもしれません。
ああを使用していた、OK、数は若干異なっています。 NumberはデフォルトでNaNになるため、isNaN(myVar)を使用してインスタンスを処理できます。しかし、intとuintについては解決したいと思っています。 – Wikiup