işlemek için aşağıdaki işlev belirli bir konumda bir şeklin içinde olup olmadığını belirler: Fare pozisyonları beslendiğindeElm - nasıl tipi Sinyal 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)
olan bu fare, şekil olup olmadığını hesaplamak (bir dikdörtgen bölge ile yaklaşık) bölge:
Signal.map3 isPosInShape Mouse.position (width, height) (sX, sY)
burada (width, height)
ve (sX, sY)
tip Signal.Signal (Float, Float)
vardır. Buradaki sorun, yukarıdaki ifadenin döndürülen değeri Signal Bool
tipindedir - bu, if
gibi koşullu işlevlere nasıl eklenebilir? Yalnızca Bool
türlerini kabul ederler.
Burada eksik olduğum en iyi uygulama var mı?