![]() |
Citat:
Jag håller med om att grazzys lösning följer KISS bäst, men räkna upp x gör han ändå i sin for. |
varför använder de flesta modulo? Det är ju endast intressant om man använder en slags radräkning annars:
mindre beräkningar att bara negera det föregående värdet på variabeln med initialt värde på 0 eller. Detta skapar en serie med 0 och 1 omväxlande. Använd sedan värdet på variabeln som villkor till if-satsen. Grazzys lösning funkar bra, den var snygg tycker jag. |
Citat:
använder vi den? vill vi ha fler än 2 olika färger? gör grazzys förslag att vi behöver komplitera med ytterligare variabler för att hålla $farg oanvänd längre ned i vår for-sats? tycker vi att modulo är häfigt? :rolleyes: |
Sorry anders att jag inte var med på att X var räknaren i for-loopen (de flesta använder väl i,j,k osv för räknare i for-satser) och/eller att det gällde en ändring av nomicons kod (som ju är ganska pratig). Men jag är inte ledsen för att jag med glimten i ögat gjorde en över-petig kommentar. :P En kommentar som förövrigt antagligen är på sin plats eftersom någon som läser denna tråd kommer testa just bara raden "$c = (fmod($x,2)) ? "black" : "white";" och sedan fråga varför det inte funkar... Det kommer väl ske både med och utan min kommentar iofs...
Nu fortsätter jag med mina petkommentarer; Jimmie: Läs ditt inlägg igen. "negera det föregående värdet med initialt värde på 0" eftersom -0 = 0 ger detta en talserie på 0,0,0,0,0,0... Grazzys funkar för att växla mellan två saker, men så snart det blir mer är ju en variante med ngn form av räknare enklare att underhålla i längden... Och jag antar att man använder modulo just för att man har en räknare (t.ex. ett index för att användas med mysql_result motsv) och då är en separat räknare onödigt, fult och sannolikt i längden otydligt. Bättre då att köra modulo på räknaren. |
Citat:
Jag gör så här, dock använder jag inte färger utan använder class på tr istället : $i = 0; while(nått villkor) { if($i) { $color = 'färg1'; } else { $color = 'färg2'; } .... $i = !$i; } Negera betyder att man gör NOT, dvs negera en nolla ger 1, så det så :P |
Citat:
Hade du skrivit "negera variabeln och börja med att sätta värdet som false" hade jag förstått direkt vad du menade. "tal serien" du är ute efter är ju false, true, false... Inte 0,1,0. Noll och ett är inte samma sak som false och true. noll tolkas (i gammal god C-anda) som false om ett boolskt värde förväntas och false tolkas som noll om ett tal förväntas. Det betyder inte att de är samma sak. |
Citat:
Dessutom betyder inte ordet negera något annorlunda om du gör det på t.ex. 7, !(7) = 0. Negera har inget med att ändra tecken på ett tal att göra. I riktiga tillämpningar där man använder faktisk hårdvara är 0 och 1 direkt synonymt med true och false, titta bara på en processor hur den behandlar true och false, tvivlar på att den skriver true och false med ascii-tecken i processorn medans den arbetar ;) Jag kan väl också säga att jag kanske skulle ha varit tydligare att jag menade boolskt värde men jag är så van med att arbeta med 1:or och 0:or att jag inte tänkte på det. Peace :P |
Hahaha, dagen har alltså kommit när jag skall bli uppläxad i hur en dator fungerar internt. Du kan bespara dig den tiden.
Att du väljer att arbeta med "ettor och nollor" (antar att du syftar på detta istf true/false) och inte true/false säger en hel del om dig som programmerare. Jag tänker undvika fadäsen att läxa upp dig i saker du redan kan. Det är inte häftigt att vara otydlig eller att strunta i en abstraktion när man programmerar. Vilken av följande rader tycker du själv ger dig mest information om variabeln och dess värde? Kod:
$a=0; |
Citat:
http://se2.php.net/manual/en/types.comparisons.php Och ja, jag borde nog använda true och false för att vara extra tydlig men av vana blev det 0 och 1 istället. Abstraktion är aldrig fel, men om vi tittar på lite andra förslag så är mitt exempel bra mer abstrakt. Du säger men att jag skulle tro att det är coolt att skriva 0 och 1 istället för false och true är väl lite att ta i :P Och nej, jag försöker inte läxa upp dig i hur en dator fungerar internt, jag är säker på att du är fullt medveten om det. Det verkar i alla fall troligt att du vet det med tanke på den höga nivån du ofta har på dina inlägg här på forumet. |
hehe, ja att det ger samma resultat har jag aldrig påstått... Det här spårade ur i en diskussion om otydligheten i det du skrev som i första hand (för mig) triggades av kontextet där alla andra använde räknare och du växlade över till boolska värden och på den vägen är det.
Och ja, din kodsnutt jimmie är definitivt inte den värsta. Jag vart mörkrädd av bl.a. nomicrons exempel och valde med flit att inte kommentera det från början eftersom jag misstänker att jag skulle prata för döva öron. Nomicrons exempel har riktiga skräckexempel där han använder strängar rakt igenom fast flera av variablerna är tal. $y='10' är inte samma sak som $y=10 även om många verkar tro det... För att inte tala om ursprungsfrågan... Det är ju uppenbart att det han frågar efter är ju en "modulo 2" alt. "boolsk negera" lösning (eller grazzys "hackerlösning" för den ser hackig ut). Och vad har det med frågan "Hur kollar man ifall ett tal är heltal?" jag ryser när det jag ser framför mig är en loop som ser ut som: for ($i=0; $i<4711; $i+=0.5) Det skulle minst sagt vara en intressant (och kreativ) lösning på ett inte helt ovanligt programmeringsproblem... En sak som vi måste ta upp för att få ett avslut i vår diskussion jimmie; vad kallar du följande operation; a = -a; Är inte även det att negera a? |
Alla tider är GMT +2. Klockan är nu 05:02. |
Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson