Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: JavaScript: JS:n return VB6:ssa?

rautamiekka [12.12.2008 15:17:16]

#

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

Metabolix [12.12.2008 15:26:12]

#

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

Grez [12.12.2008 15:38:43]

#

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

rautamiekka [12.12.2008 15:52:56]

#

(Tajusin juuri että Output on VB:n sisäinen Property joka aiheuttaa herjan yritettäessä käyttää sitä kuin koodissani lukee) :)

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta