Kan man använda Select Case när flera vilkor ska vara uppfyllda, eller jämför man bara med ett ursprungsvärde? Ett exempel, kan man (och i så fall hur...) skriva om följande exempel med Select Case: Hej! Jag har jobbat väldigt lite med ASP men i Vb hade jag gjort så här med just din jämförelse Du skriver att du i din "riktiga" kod har ett tiotal ElseIf, så jag antar att dina If-satser ser ut ungefär; Japp, ungefär så ser det ut. Jag tackar för responsen och kryssar i "löst". Om du vill jämföra talen med varandra se vilken som är störst minst och lika med varanadra. Då är det bättre att göra en jämförelse per nivå. På så göra man mindre antal jämförelser. Men det kräver mer kod:Flera vilkor i Select Case
<%
Var1 = 2
Var2 = 3
Var3 = 4
If Var1 + Var2 = Var3 Then
Response.Write("Alternativ 1")
ElseIf Var1 + Var2 < Var3 Then
Response.Write("Alternativ 2")
ElseIf Var1 + Var2 > Var3 Then
Response.Write("Alternativ 3")
End If
%>
Eller finns det andra sätt att göra detta bättre? I min tillämpning har jag ett tiotal ElseIf och skulle vilja snygga till det lite.Sv: Flera vilkor i Select Case
Select Case är ganska strikt i ASP. Du kan inte ha med < eller > i syntaxen, utan bara en kommaseparerad lista på möjliga värden. Det närmaste du kan komma utan att krångla till det allt för mycket i ditt exempel är:
<code>
Var1 = 2
Var2 = 3
Var3 = 4
Select Case (Var1 + Var2)
Case Var3
Response.Write("Alternativ 1")
Case (Var3 - 1), (Var3 - 2), ...osv
Response.Write("Alternativ 2")
Case (Var3 + 1), (Var3 + 2), ...osv
Response.Write("Alternativ 3")
End Select
</code>Sv: Flera vilkor i Select Case
<code>
var1 = 2
var2 = 3
var3 = 4
Select Case Sgn((var1 + var2) - var3)
Case -1
Debug.Print "var1 + var2 < var3"
Case 0
Debug.Print "var1 + var2 = var3"
Case 1
Debug.Print "var1 + var2 > var3"
End Select
</code>
//
JanneSv: Flera vilkor i Select Case
<code>
If a = b And b < c Then
...
ElseIf a > b And b < c Then
...
ElseIf
...
End If
</code>
I sådana fall kan du inte använda Select Case.Sv: Flera vilkor i Select Case
Sv: Flera vilkor i Select Case
<code>
Dim Var1
Dim Var2
Dim Var3
Var1 = 2
Var2 = 3
Var3 = 4
If Var1 < Var2 Then
If Var2 < Var3 Then
Response.Write "Var1, Var2, Var3"
If Var2 > Var3 Then
If Var3 < Var1 Then
Response.Write "Var3, Var1, Var2"
ElseIf Var3 > Var1 Then
Response.Write "Var1, Var3, Var2"
Else
Response.Write "Var1 = Var3, Var2"
End If
Else
Response.Write "Var1, Var2 = Var3"
End If
ElseIf Var1 > Var2 Then
If Var2 < Var3 Then
If Var3 < Var1 Then
Response.Write "Var2, Var3, Var1"
ElseIf Var3 > Var1 Then
Response.Write "Var2, Var1, Var3"
Else
Response.Write "Var2, Var1 = Var3"
End If
If Var2 > Var3 Then
Response.Write "Var3, Var2, Var1"
Else
Response.Write "Var2 = Var3, Var1"
End If
Else
If Var2 < Var3 Then
Response.Write "Var1 = Var2, Var3"
If Var2 > Var3 Then
Response.Write "Var3, Var1 = Var2"
Else
Response.Write "Var1 = Var2 = Var3"
End If
End If
</code>
Jag tror det max görs fem jämförelser i detta fallet.