UPD: Kesinlikle bu sihirli sayı bazı sonucunda görünmez tamamen emin olabilir sürece, değer yokluğunu göstermek için bazı sihirli numarayı almak için iyi bir uygulama değildir aritmetik (genellikle doğru olan). Bu nedenle, buradaki en iyi yaklaşım, int
'dan (örneğin, Number
) daha geniş bir tür kullanmak ya da gerçek değer yokluğunu belirtmek için bazı bayrak (Boolean
değeri) işlevinin yanı sıra int
işlevini geçirmektir. Seçim, değeri geçmişin öneminin önemini vurgulamak isteyip istemediğinize bağlı olmalıdır. Eğer argüman türü genişleyen memnunsanız
, o zaman NaN
kullanabilir ve bu yapmalıdır: Her iki teknik olarak daha doğru olduğunu
function setMyValue (myVar : Number = NaN) : void
{
if (isNaN(myVar))
{
/* Generate a value for myVar */
}
else
{
/* Use the supplied value for myVar */
}
}
ve aynı zamanda daha kararlı. Ayrıca kuvvetle derleme sırasında yazın sağlayacak ve Object
kullanarak olduğu gibi garip hatalar neden olmaz. Bu cevaplardan biri anlaşılacağı gibi int
ile çalışmaz
Not. int
, yalnızca sayısal değerlere sahiptir ve NaN
, 0'a zorlanır. Number
türünü kullanmanız gerekir.
Performanstan endişe ediyorsanız - olmayın. Number
yerine int
veya uint
kullanılması genellikle sorun yok.
UPD
: İsterseniz bu argüman sadece ek bayrağı ve kesin türü kullanmak ayrılmaz olmalıdır işaretlemek açıkça etmek - bu çok daha net olacaktır.
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 */
}
}
Diğer bir seçenek ek değer, örneğin kendi türünü tanımlamaktır MaybeInt
, tamsayı değeri ve bir bayrağı (aslında başlatılmış olsun ya da olmasın) tutar. Bu şekilde, bu değerin integral olması gerektiğini veya no-value olduğunu belirtmiş olursunuz. Ancak, bu yaklaşım biraz hantal olabilir.
Ah, tamam, Sayı biraz farklıdır kullanmaktı. Sayı varsayılanları NaN'dir, böylece örnek isNaN (myVar) kullanılarak işlenebilir. Yine de int ve uint için çözmek istiyorum. – Wikiup