Olen lukenut monilta sivuilta mitä Return tekee JScriptissä, mutta missään ei tule selitystä tämän koodin ratkaisemiseen:
function xplevel(exp){
var points = 0;
var output = 0;
for (var lvl = 1; lvl <= 150; lvl++){
points += Math.floor(lvl + 300 * Math.pow(2, lvl / 7.))
if (lvl >= 1){
if (output > exp){
lvl = lvl - 1;
if (lvl == "0") { return "1"; }
else if (lvl > "99") { return "99"; }
else { return lvl; }
}
output = Math.floor(points / 4);
}
}
return 0;
}Tässä itsetulkittu versio:
Function CalcXPlvl(exp)
Dim Points As Integer: Points = 0
Dim Output As Long: Output = 0
Dim LvL As Integer: LvL = 1
Dim i As Integer
For i = LvL To 150
Points = Points + int((LvL + 300 * (2 ^ (LvL / 7))))
If LvL >= 1 Then
If Output > exp Then
LvL = LvL - 1
If LvL = 0 Then
LvL = 1
ElseIf LvL > 99 Then
LvL = 99
Else
LvL = LvL
End If
Output = int((Points / 4))
End If
End If
Next
End FunctionReturn myös lopettaa funktion, eli VB:ssä se tarvitsee tuon tekemäsi sijoituksen lisäksi rivin Exit Function. MSDN tosin vihjasi, että Return löytyisi myös VB:stä, mutta tämä taitaa olla VB.Net-ominaisuus.
MSDN (http://msdn.microsoft.com/en-us/library/sect4ck6.aspx) kirjoitti:
Function myFunction(ByVal j As Integer) As Double Return 3.87 * j End Function
Edit. Enpä katsonut VB:täsi riittävän tarkkaan. Miksi sijoitat arvon Lvl-muuttujaan? return laittaa sen funktion paluuarvoksi, eli seuraavat koodit vastaavat toisiaan:
function juttu() {
return 3;
}Function juttu As Integer juttu = 3 Exit Function End Function
Joo, siis return löytyy tosiaan VB.Netistä.
VB:ssa funktio palauttaa arvon siten, että palautettava arvo sijoitetaan funktion nimeen. (Jonka Metabolix juuri editoikin omaan viestiinsä)
Eli tyyliin
Function CalcXPlvl(exp) As Integer
Dim Points As Integer: Points = 0
Dim Output As Long: Output = 0
Dim LvL As Integer: LvL = 1
Dim i As Integer
For i = LvL To 150
Points = Points + int((LvL + 300 * (2 ^ (LvL / 7))))
If LvL >= 1 Then
If Output > exp Then
LvL = LvL - 1
If LvL = 0 Then
CalcXPlvl = 1
Exit Function
ElseIf LvL > 99 Then
CalcXPlvl = 99
Exit Function
Else
CalcXPlvl = LvL
Exit Function
End If
Output = int((Points / 4))
End If
End If
Next
CalcXPlvl = 0
End Function(Tajusin juuri että Output on VB:n sisäinen Property joka aiheuttaa herjan yritettäessä käyttää sitä kuin koodissani lukee) :)
Aihe on jo aika vanha, joten et voi enää vastata siihen.