Salü an alle!
Folgende Problemstellung:
Eine vorhande Zahl soll einem Wertebereich (Range) zugewiesen werden.
Ist die Zahl zu klein, wird sie auf den Minimalwert der Range angehoben, ist sie zu groß, wird sie auf den Maximalwert der Range herabgesetzt.
Beispiel: Range -20 bis +200
Zahl = 175 ... bleibt 175
Zahl = 666 ... wird 200
Zahl = -69 ... wird -20
Umsetzung in Javascript ...
var Rmin = -20
var Rmax = 200
var NumberChk = 4711
var NumberNew
// Langversion:
// NumberChk = Math.min( Rmax , NumberChk )
// NumberNew = Math.max( Rmin , NumberChk )
// Kurzversion (verschachtelt):
NumberNew = Math.min( Rmax , Math.max( Rmin , NumberChk ) )
Alles anzeigen
In krpano "stecke" ich in der Langversion fest:
<mayrange min="-20" max="200" nr_a="666" nr_b="111" />
<action name="AdjustToRange" scope="local" keep="true">
Math.min( xChk , mayrange.max , calc(mayrange.nr_a+mayrange.nr_b) );
Math.max( xNew , mayrange.min , xChk );
trace( 'NumberNew: ' , xNew );
</action>
Eine krpano-Script Kurzversion bekomme ich einfach nicht "gebacken".
Hat jemand eine Idee, wie man es kompakter coden kann?
Zusatzbemerkung:
Das Problem klingt auf den ersten Augenblick trivial und man könnte denken "Was will der Typ eigentlich? Die eine Zeile mehr Code ist doch schnuppe!".
Mir geht es aber ...
1. noch oft um das Verständnis von krpano-Script
2. um Dinge wie Code-Minimierung. Wenn ein solcher Code-Block statt in einer <action> z.B. in einem möglichst kompakten asyncloop untergebracht werden muss.
Grüße, Don