|
||||
|
|||||||||||||||
|
Boolean maybe Sigurjón Sveinsson - Föstudagur 7. apríl 2006 Viðhengi Klasinn í allri sinni dýrð. Verð að hafa hann í zip skrá því issinn vill ekki sýna .cs skrár. Gæti svosum haft .txt... Oft þegar verið er að athuga skilyrði, stöðu, aðgang og annað eru notaðar boolean breytur og þær geta bara haft tvær stöður, true eða false. Þegar boolean breyta er skilgreind þá er sjálfgefið gildi hennar false og yfirleitt er gildi breyturnar sett í leiðinni (true/false) eftir því sem við á og í hvaða stuði forritarinn er þá stundina. En svo keyrist kóðinn og skilyrði og stöður breytast og hvernig veit maður þá hver raunverulegt gildi boolean breyturnar er? Er hún upprunalega gildið, og þá kannski í óvissu, eða inniheldur hún gildi sem er raunveruleg niðurstaða raunverulegs tékks, og þar með marktækt gildi? Segjum sem svo að ég kaupi mér bíl óséðan, og veit ekki hvaða litur er á honum, og sé með tékk sem heitir BillinnErRaudur í bílaskránni minni. Ég bý til þetta tékk í upphafi, þegar ég bý til nýja skráningu, og set það á false þó ég sé ekki að taka afstöðu til litar bílsins þarna, þetta er bara eitthvað gildi. Svo fer ég niður í kjallara að ná í dót, les moggan, leik mér við börnin og kyssi konuna og skoða svo tékkið mitt, BillinnErRaudur og það er false. Er þá bíllinn ekki rauður, eða er hann rauður? Ég veit það ekki, hef ekki skoðað bílinn, né heldur séð litinn á bílnum. Þetta er því óvissa. Tölvur eru ekki það klárar að þær viti óvissuna þarna án þess að hafa fleiri upplýsingar. Ég gæti bætt úr því með því að setja inn viðbótartékkið ErBuinnAdSkodaLitBilsins. Það gildi er false þangað til ég er búinn að skoða bílinn. Þegar ég er búinn að skoða bílinn er það sett á true. Þar af leiðandi, ef tölva ætlaði að taka mark á því gildi sem BillinnErRaudur inniheldur, þá verður hún að skoða gildi ErBuinnAdSkodaLitBilsins fyrst. Þá, og aðeins þá, er kominn fullvissa um að liturinn sé örugglega þekktur. Þessar vangaveltur urðu til þess fyrir nokkru að ég fór að velta fyrir mér boolean maybe. Er bíllinn rauður? Eða ekki? Kannski, ég hef ekki skoðað hann ennþá. Til að auðvelda mér lífið í svona forritunartilvikum bjó ég til klasann BooleanContainer í C#. Hann inniheldur tvær breytur m_bValue og m_bIsValueSet. m_bValue er gildið, m_bIsValueSet segir til um hvort að gildið sé default gildi (false) eða hvort að búið sé að setja það með tékki. T.d. ef ég væri búinn að athuga bílinn minn og hann er blár þá væri m_bIsValueSet = true og m_bValue = false. m_bIsValueSet segir til um að búið sé að athuga litinn á bílnum og því sé m_bValue marktækt gildi. Ef þú ert forritari og langar til að kíkja á þennan hreint út sagt magnaða klasa minn uppá skrilljón trilljón línur þá endilega kíktu á viðhengið hér fyrir neðan sem inniheldur þennan klasa. Viðhengi Klasinn í allri sinni dýrð. Verð að hafa hann í zip skrá því issinn vill ekki sýna .cs skrár. Gæti svosum haft .txt... |
| Sigurjón Sveinsson / 856 6423 / 561 4440 / sigurjons.blogspot.com si.tenmis@vsnojrugis |