Я хочу создать отфильтрованный Signal
для положения мыши. Он должен обновляться, когда кнопка мыши недоступна, или мышь переходит с «не вниз» на «вниз».Отфильтровать сигнал по значению другого сигнала
Я придумал эту функцию. Он работает, но использование трех анонимных функций кажется неправильным. Есть ли идиоматический способ сделать это?
mouseDownPosition: Signal (Int, Int)
mouseDownPosition =
Signal.map2 (\(x, y) isDown -> (x, y, isDown)) Mouse.position Mouse.isDown
|> Signal.filter (\(x, y, isDown) -> isDown) (0, 0, False)
|> Signal.map (\(x, y, isDown) -> (x, y))
Спасибо! Вы правы, мое описание было немного неточным (я его обновил). В настоящее время целесообразно обрабатывать обновления 'isDown' и' position', поэтому мое решение и 'sampleWhen' работают хорошо.В какой-то момент я буду обрабатывать 'isDown' обновления отдельно, поэтому я буду использовать' keepWhen' или добавить 'sampleOn' в свою функцию. – joews