gpt4 book ai didi

haskell - 如何对 NCurses getEvent 执行条件操作

转载 作者:行者123 更新时间:2023-12-02 14:10:53 25 4
gpt4 key购买 nike

我正在查看这里的信息:Hackage

我希望程序中发生不同的事情,具体取决于按下的箭头键。使用 NCurses 模块,我可以使用 getEvent 函数注册事件。但我无法让 if 语句对存储的事件起作用。这是我的代码:

main = runCurses $ do
w <- defaultWindow
e <- getEvent w (Just 300)
let x = setX e

setX e
| e == KeyLeftArrow = -1
| e == KeyRightArrow = 1
| otherwise = 0

这给出了无法将预期类型“Key”与实际类型“Maybe Event”匹配,因此我更改为e == Just Key...Arrow,然后得到

Couldn't match type ‘Event’ with ‘Key’
Expected type: Maybe Key
Actual type: Maybe Event

我猜这是因为 e 是一个事件,而我的行为就好像它是一个键,但即使在尝试这个 Key e == Just Key...Arrow 之后 它不起作用。我怎样才能把这个事件变成一把 key ?或者以其他方式让我的 e 条件起作用?

最佳答案

您已正确识别问题。您建议的解决方案是将 Key 放在等号的左侧,即在您已经确定实际上您没有 key 时断言您拥有 key t!

查看包链接可以发现Event可能是按键EventSpecialKey Key。因此,

setX e = case e of --lambdacase would be even more idiomatic
Just (EventSpecialKey KeyLeftArrow) -> -1
Just (EventSpecialKey KeyRightArrow) -> 1
_ -> 0

关于haskell - 如何对 NCurses getEvent 执行条件操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55560122/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com