Page 1 of 1

wDay() [UDF]

Posted: 19 Jun 2017, 03:36
by BoBo
Einer unserer kollegen aus dem US/UK forum poste[d|te] ein schönes beispiel wie ein ternary-operator einsetzbar ist. Entgegen der allgemeinen vorgehensweise zum multibel verschwurbelten einzeiler hatte er diesen ähnlich einer continuation-section aufgedröselt. Das liest sich zum programmierzeitpunkt recht noob-friendly und mir fiel dazu ad-hoc ein noobisher verwendungszweck ein ...

Code: Select all

F1::							; drücke F1 um als testfall eine zufallswochentagnummer in den dazugehörigen tagesnamen übersetzen zu lassen.
      Random, dayNo, 1, 7
      MsgBox % dayNo " = " msg := wDay(dayNo)
      Return

wDay(dayNo){
      dayName := dayNo = 1 ? "Sunday"
              :  dayNo = 2 ? "Monday"
              :  dayNo = 3 ? "Tuesday"
              :  dayNo = 4 ? "Wednesday"
              :  dayNo = 5 ? "Thursday"
              :  dayNo = 6 ? "Friday"
              :  dayNo = 7 ? "Saturday"
              :  "ERROR"
      Return % dayName
      }
... der selbst für bekennende ternary-operator-phobiker als leicht(er) verdaulich einzustufen sein sollte.

Ternary-operator schon schön, doch die statische sprachauswahl nervte mich dann doch etwas.
Da ging noch was - no, no bitshift-/dllcall-/COMtralala, still FullMetalBoBo! - und doch ein paar zeilen code gespart :shh:
Spoiler
Hollaröhdulliöh :thumbup:

Re: wDay() [UDF]

Posted: 19 Jun 2017, 03:53
by nnnik
Man könnte bei Fällen die ein Switch Case Statement darstellen auch sehr schön mit Arrays arbeiten:

Code: Select all

getDayName( nr )
{
	static days := [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]
	return days.hasKey( nr ) ? days[ nr ] : "Error"
}

Re: wDay() [UDF]

Posted: 19 Jun 2017, 13:44
by HotKeyIt

Code: Select all

MsgBox % getDayName(1)
getDayName( nr ){
	FormatTime, time,% 19010106+nr, dddd
	return time
}