我正在尝试使用Gtk和Haskell。而我卡住了。此链接显示了我的实验。 https://github.com/bigos/my-haskell-gtk-3-tutorial/blob/master/5-layout-containers.org#edit-the-source-2
我正在尝试打印单击列表框行的索引。以下代码给出了一个我不理解的类型错误。
onListBoxRowSelected listbox2 (\row -> putStrLn (listBoxRowGetIndex row))
我需要一个示例,我可以看到有人可以正确处理listBox行上的点击事件。
找不到必需的祖先'GI.Gtk.Objects.ListBoxRow.ListBoxRow' 键入'Maybe GI.Gtk.Objects.ListBoxRow.ListBoxRow'。 •在第一个 'putStrLn'的参数,即'(listBoxRowGetIndex row)'中 表达式:putStrLn(listBoxRowGetIndex row)在第二个参数中 'onListBoxRowSelected',即
答案 0 :(得分:1)
回调参数类型为Maybe GI.Gtk.Objects.ListBoxRow.ListBoxRow
。如果没有选择任何内容,它可以是Nothing
。 listBoxRowGetIndex
的参数具有多态类型,因此它会尝试查找Maybe GI.Gtk.Objects.ListBoxRow.ListBoxRow
的实例,但是没有这样的实例。最小的工作代码是
onListBoxRowSelected listbox2 (\(Just row) -> listBoxRowGetIndex row >>= print)
但是,考虑应用程序逻辑,最好正确处理Nothing
案例。