2016-04-14 42 views
0

Bu soru, VBScript'in işlevselliğini daha iyi anlamak için çoğunlukla ilgi çekici değildir. Kodumdan ne bekleyeceğimi bilmek için biraz yayın yapabileceğimi biliyorum, ancak durumumda neden döküm veya herhangi bir "geçici çözüm" gerektiğini anlamak istiyorum. Bunu çalıştırdığınızda bir Type Mismatch hatası alıyorumVBScript işlevimin dönüş tipi nedir?

variable1 = 1 

Public Function findSomethingInATextString(par1, par2) 
    [...searching with a Do Until loop code here...] 
    Result = 1 
    If([par2 is found in par1]) Then 
     Result = 0 
    End If 
    Return Result 
End Function 

variable1 = findSomethingInATextString("Hello World", "Hello") 

: Kolaylık olması açısından, burada benim kod temel fikirdir. Neden böyle olduğunu anlamıyorum. variable1 bir tamsayı ve findSomethingInAString() bir tamsayı döndürür. Aynı veri tipi gibi görünüyorlar.

Çok fazla hata ayıklama yapamadığım kısıtlı bir ortamda çalışıyorum (bu programda kodu yazmak yavaş ...). Yani şu anda bu tip bir veri türünü söyleyemiyorum - sadece görünüşe göre tamsayı olmadığını biliyorum.

Bütün bunlardan sonra

ve ben (birisi biliyor ki bu ise) benim işlevinin dönüş türü ne olduğunu bilmek ilgimi çekti benim sorum net olduğundan emin olmak için, ama benim gerçek soru şudur: neden değil mi' t değişkeni1 ile eşleşen tür eşleştirmesi?

+0

Bu VBScript değil. VBScript'te, 'Variant' tek veri türüdür. Lütfen bunu doğru dil ile etiketleyin. –

+2

Ayrıca, sözde kodunuzun _VBScript_ olması gerekiyorsa… _VBScript_'de "Return" ifadesi yok. Bir işlev, prosedürün bir veya daha fazla ifadesinde ismine bir değer atayarak bir değer döndürür. 'Return Result' yerine' findSomethingInAString = Result' sözcüğünü kullanın ve 'Public Function findSomethingInAString (par1, par2)' – JosefZ

+0

Oh oops kelimesinde _string_ ifadesini kullanın. Parametre kısmına "string" koymak için sadece bir alışkanlık. Bunu düzenleyeceğim. – Alamb

cevap

2

sadece VBScript return bahseden bir tür uyumsuzluğu hatası atar

cscript 36633603.vbs 
...36633603.vbs(1, 1) Microsoft VBScript runtime error: Type mismatch: 'return' 

kendinize kanıtlamak için Çıktı asgari senaryoyu

Return 

kullanın.

JosefZ'nin yorumuna VBScript'in işlev ismini atayarak işlev değerlerini döndürdüğüne inanın. Daha iyi: docs'u (kod yazmayı denemeden önce okuyun) okuyun.

Kanıt:

Function f1() 
    f1 = 1 
End Function 

WScript.Echo f1(), TypeName(f1()) 

Çıktı:

cscript 36633603.vbs 
1 Integer 
+0

Teşekkürler @Ekkehard, bu yapmak için ilginç bir test. JosefZ'e inanıyorum ve dokümanlar okuduğumda, 3 farklı projede 3 farklı dilde kod yazdığım ve alışkanlık olarak düşünmeden “dönüş” yazdığım günlerden biriydi. – Alamb