Förstår inte var för folk skriver exempel Skälet till att man vill skriva det på en rad är ju att man vill förkorta koden och göra den mer lättläst. Anledningen till att det kan finnas skäl till att dela upp det på flera olika rader är att VB till skillnad från de flesta språk saknar short-circuiting (alltså korslutning), och att man då eventuellt kan få prestandavinster. I VB.NET har man tänkt på detta, då skriver du såhär istället: >AndAlos vad är det ? Förstår inte varför folk skriver så här: Om man skriver så här >så kan syftet vara att man vill göra något i de fall x=10 oavset vad y eller z Njaee... det är väl inte så konstigt? Rita up ett JSP träd med selectionen så ser man mera tydligt vad som bör väljas. Optimeringar kan lätt bli tokiga speciellt då kod oftast skall ärvas av andra programmerare då man inte stannar hela yrkeslivet på samma tjänst. <b>JSP förkortning av "Jackson Structured Programming" för de som inte känner till begreppet. En av grunderna i strukturerad programmering</b> Är det inte härligt med XOR och XNOR idetta fall? Om du läser diskussionen igen ser du att det handlar om att inte evaluera uttryck "i onödan" och då kan iaf inte jag se att ditt inlägg tillfört något. Det kommer dessutom bli fel resultat om båda uttrycken är sanna. Men jag kan ha missat något... Nej, det var mest ett inlägg som skulle värna om "finare" kod i uttryck där två villkor ställs som inte får vara uppfyllda/inte uppfyllda (det kan hända att jag blivit indoktrinerad av binärteknik). <b>>Nej, det var mest ett inlägg som skulle värna om "finare" kod i uttryck där två villkor ställs som inte får vara uppfyllda/inte uppfyllda (det kan hända att jag blivit indoktrinerad av binärteknik).</b>Fundering kring And operatorn ?
If x = 10 And y = 21 And z = 56 Then ........
Om nu inte x = 10 dvs False finns det väl ingen anledning att kolla dom andra !?
Eller ;-)
Enl min uppfattning skall det skrivas
<code>
If x = 10 Then
If y = 21 Then
If z = 56 Then gör något
End If
End If
</code>Sv: Fundering kring And operatorn ?
Skriver man motsvarande sak i C/C++:
if (x==10 && y==21 && z==56)
{
...
}
så kollar den bara så långt den behöver.
Om man tänker sig en funktion som ser ut så här:
<code>
Function f (x As Double) As Double
Static LastX As Double
f=LastX
LastX=x
End Function
</code>
Så kan man ju göra något i stil med
<code>
If f(3)=4 And f(5)=3 Then
...
</code>
Då är ju inte det samma sak som
<code>
If f(3)=4 Then
If f(5)=3 Then
...
</code>
Eftersom VB har synen att den måste kolla alla uttryck, oavsett om de tidigare villkoren avgör uttrycket eller inte. Så är det inte i t.ex. C++, vilket är mycket praktiskt, t.ex. när man använder pekare eller någon typ av smart konstruerade klasser.
Alltså kan man göra något i stil med:
Objekt *objekt;
if(object && objekt->ready())
Vilket gör att objekt inte finns så kommer man inte använda objekt->ready(), och koden funkar jättebra utan att krångla med flera rader.
Sv: Fundering kring And operatorn ?
If x = 10 AndAlso y = 21 AndAlos z = 56 Then
Med detta vill jag visa att det finns förbättringar i VB.NET som kanske t.o.m. Sven kan ta till sig ;)
/JohanSv: Fundering kring And operatorn ?
Kunde inte låta bli Flåt :-)
Bra Niklas och Johan , trodde jag skulle provocera fram några andra sk proffs ;-)Sv: Fundering kring And operatorn ?
> Förstår inte var för folk skriver exempel Sv: Fundering kring And operatorn ?
If x = 10 Then
If y = 21 Then
If z = 56 Then gör något
End If
End If
så kan syftet vara att man vill göra något i de fall x=10 oavset vad y eller z
If x = 10 Then
'kod som skall utföras i de fall som x = 10 oavsett y eller z
If y = 21 Then
If z = 56 Then gör något
End If
End If
Om man skriver
If x = 10 And y = 21 And z = 56 Then ........
så är nog syftet att endast i detta fall då alla tre variablerna uppfyller kriteriet så skall något utföras.
Om man lärt sig JSP så inser man nog skillnaden.
(JSP förkortning av "Jackson Structured Programming" för de som inte känner till begreppet. En av grunderna i strukturerad programmering)
http://encyclopedia.thefreedictionary.com/Jackson%20Structured%20Programming
Sv: Fundering kring And operatorn ?
Måste vara kvalificerat logik "bull"Sv: Fundering kring And operatorn ?
<code>
If FileFound Then
lblFileDesc = FileName
If FileExt="bmp" Then
picDesc.Picture = FullFileName
End If
End If
</code>
Men det var ju inte det diskussionen rörde. Själv kör jag alltid med And om det inte är grymt tunga operationer man vill låta bli att utföra (och det sker aldrig i en sån kontroll).Sv: Fundering kring And operatorn ?
Sv: Fundering kring And operatorn ?
Just precis... När en kompis hade börjat jobba och jag undrade vad han höll på med, frågade han om jag kände till JSP. Det enda JSP jag kände till då var just Jackson Structured Programming, som jag hade läst om i en datortidning för en herrans massa år sedan. Fast det var inte det han menade, utan Java Server Pages...Sv: Fundering kring And operatorn ?
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vblr7/html/vaoprXor.asp
t.ex: if (a=3) XOR (b=4) then ' (Utför om endast ett villkor är uppfyllt)
Kombinera den, och voila <--Stavas det så?
Med vänliga hälsningar
Johan ForsbergSv: Fundering kring And operatorn ?
/JohanSv: Fundering kring And operatorn ?
Det handlar ju egentligen bara om vad jag anser vara lättast kod (vilket jag värderar högt klockan halv fyra när man är 8% levande).
Men, det är ju som sagt mer en fråga om stil.
Med vänliga hälsningar
Johan ForsbergSv: Fundering kring And operatorn ?
Jo, men... vad hade det med diskussionen att göra?
Naturligtvis kan jag, liksom 99% av alla andra programmerare, binär logik och hur man kan använda det.
Diskussionen gällde nyttan eller onyttan med
If villkor1 Then
If villkor2 Then
...
vs
If villkor1 And villkor2 Then
...