Die folgende Funktion bestimmt, ob oder ob nicht eine bestimmte Position innerhalb einer Form zu verarbeiten:Elm - Wie Typ Signal Bool
isPosInShape: (Int,Int) -> (Float,Float) -> (Float,Float) -> Bool
isPosInShape (posX, posY) (w, h) (shapeX, shapeY) =
let
(pX,pY) =
(toFloat posX, toFloat posY)
in
(pX > shapeX - w/2) && (pX < shapeX + w/2) && (pY > shapeY - h/2) && (pY < shapeY + h/2)
wenn Mauspositionen zugeführt wird, kann dies berechnen, ob die Maus in einer Form ist, Region (durch ein Rechteck angenähert Region):
Signal.map3 isPosInShape Mouse.position (width, height) (sX, sY)
wo (width, height)
und (sX, sY)
sind vom Typ Signal.Signal (Float, Float)
.
Das Problem hier ist, dass der zurückgegebene Wert des obigen Ausdrucks vom Typ Signal Bool
ist - wie kann dies in bedingte Funktionen wie if
eingespeist werden? Sie würden nur Bool
Typen akzeptieren.
Gibt es eine Best Practice, die mir hier fehlt?