我有以下代码形式Dolphin Smalltalk:
gst
显示桌面上的数字时钟。这段代码可以在GNU Smalltalk上运行吗?我在VirtualBox虚拟机上试用了Fedora上的gst-blox
和gst-blox
并且它没有用,并且gst-browser
在Ubuntu上不存在, $pass = md5($model->password);
$newUser->password = $pass;
在Fedora和Ubuntu都给了一个
对象:CFunctionDescriptor new:1"< 0x7ffb3a010dc0>"错误:无效的C调用g_date_get_type
启动应用时。如何在GNU Smalltalk中完成?
答案 0 :(得分:4)
我不熟悉GNU Smalltalk(我使用Pharo),所以也许有更好的方法来编写代码,但无论如何。
gst
不需要任何GUI(它是一个CLI),即使它提供了它们,它也不会提供必要的系统库来运行它们,所以你必须安装它们manually:
gst-browser
(new ui):libgtk2.0
libcairo2
(在ubuntu上测试)gst-blox
(old ui):tcl
tk
(未经测试)我发现代码有两个问题:GST不支持Process>>sleep:
,它使用GUI。
至于GUI,Smalltalks有非常不同的UI库,Dolphin面向MS Windows,GNU Smalltalk使用GNU东西(GTK用于新版gst浏览器,TK / TCL用于旧版gst-blox),Pharo使用雅典等。即使他们分享一些概念(例如MVC模式),他们也不会真正共享API。
事实上,似乎GNUSmalltalk有“新”UI --- VisualGST(gst-browser),并且gst-blox已被弃用。
在任何情况下,经过一些挖掘后,我最终得到以下代码。它创建了一个GTK窗口(gst-browser使用的UI),然后它不断更新文本。
window := GTK.GtkWindow new: GTK.Gtk gtkWindowToplevel.
window setTitle: 'Time'.
window resize: 400 height: 300.
label := GTK.GtkLabel new.
label setText: Time now printString.
label show.
window add: label.
window show.
digitalClockProcess := [[
(Delay forSeconds: 1) wait.
label setText: Time now printString.
] repeat] fork.
gst-blox
的代码必须使用tcl / tk,我不熟悉。
要在gst-browser
中运行代码,请从顶部菜单中选择'工具> “底部窗格”,然后将代码粘贴到底部窗格中的“工作区”(您可以通过“文件>新工作区”添加更多工作区。
答案 1 :(得分:0)
可以找到如何下载和构建GNU smalltalk的说明here。这应该可以解决你在ubuntu上使用gst-blox(带GUI的GNU smalltalk)的问题。