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 Function
Return 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.