我下载了Squeak,Image文件和Sources文件,但我无法弄清楚如何编写Smalltalk代码.有什么明显的东西我不见了吗?Squeak甚至是严肃的Smalltalk开发的正确IDE吗?
我在使用singleton模式初始化smalltalk中的实例变量时遇到了麻烦.(这里是另一个实现的链接以便澄清)
这就是我所拥有的:
new
^UniqueInstance ifNil: [UniqueInstance := self basicNew.
UniqueInstance: instanceVar := Object new. ].
Run Code Online (Sandbox Code Playgroud)
最后一行(UniqueInstance:instanceVar:= Object new.)不起作用,但基本上我需要做的是:在将UniqueInstance返回给调用者之前,将instanceVar实例化为Object.
请注意,此"new"方法用作类实例化,并且该库是UniqueIsntance的实例变量(所需类的isntance).
谁能指出我正确的方向?
非常简单的问题我需要从用户获取一个整数,我只知道如何从中获取一个字符串.因此,如果有办法从用户获取整数或将字符串转换为整数,请告诉我.
Smalltalk相当于Java的静态字段和方法是什么?IOW,Smalltalkers在需要类级数据和/或方法时会做些什么?
我正努力加快Smalltalk/Seaside的速度.根据维基百科,"海边是基于延续的Web应用程序框架".来自Java背景我不太熟悉continuation.
经过一些阅读后,我理解延续用于维护状态,从而保存进程的快照,并可以在以后恢复(类似于将Windows置于休眠模式).
这与使用"后退"按钮的Seaside最相关?使用代码块和"回调"与使用延续不同?
我还试图评估在Seaside实际使用延续的当前重要性.我很困惑,因为许多在线参考Seaside提到延续作为关键和定义功能.但是,我也发现一些文章提到在Seaside使用延续并不常用,实际上并不是一个关键特征.
非常感谢任何有用的输入,让我直截了当!
上下文是这样的:
一个包在几个存储库中开发了几个分支
发展停止source.squeak.org,其目标是到分支,以便有发表在一个库中的所有版本转回squeaksource.
但为了方便人们浏览和快速识别分支,我希望在squeaksource副本的名称中添加标准分支标识.
有没有办法自动化这项操作?可能还有Gofer?
在Smalltalk中,如果您没有明确地返回任何内容,则传递的消息将评估为接收者(或消息上下文中的"self").
例如,给定此方法:
MyClass >> myMethod
Transcript show: 'hello'; cr.
Run Code Online (Sandbox Code Playgroud)
评估(doint"print-it")这个:
| myInstance |
myInstance := MyClass new.
myInstance myMethod.
Run Code Online (Sandbox Code Playgroud)
如果对最后一次调用执行<print-it>,则结果将是实例本身.
是否有更简单的方法来解析1行注释?
comment
^ '//' asParser ,
(#any asParser starLazy: (#newline asParser)) ,
#newline asParser
==> [ :result | nil "Ignore comments" ]
program
^ (comment / instruction) star
==> [ :result | N2TProgramNode new
setNodes: (result copyWithout: nil) ]
Run Code Online (Sandbox Code Playgroud)
我特别不确定(#newline asParser)和#copyWithout:的重复.
在Lukas的回答之后,我提出了更简单的以下解决方案:
program
^ programEntity star
==> [ :result | N2TProgramNode new setNodes: result]
programEntity
^ instruction trim: ignorable
ignorable
^ comment / #space asParser
comment
^ '//' asParser , #newline asParser negate star
Run Code Online (Sandbox Code Playgroud) 我试图了解Smalltalk中的对象/消息与Erlang中的进程/消息之间的区别。我阅读了有关该主题的以下文章。
据我了解,在Smalltalk中,所有事物都是一个对象,并且所有事物都具有相同的“对象/消息”抽象-即使数字1是只能通过消息传递才能到达的对象。是1在Erlang / Elixir中进行的过程吗?Erlang中的所有内容是否都是对消息/程序范例的响应?您可以向Erlang中的号码发送消息吗?
非常感谢。
我现在正在学习Smalltalk.它看起来与python非常相似(实际上,相反,python与Smalltalk非常相似),所以我想知道,作为一个python爱好者,如果我真的值得我研究它.
除了消息传递,Smalltalk和python之间还有哪些值得注意的概念差异,这可以让我看到新的编程视野?
smalltalk ×10
oop ×3
pharo ×3
squeak ×3
elixir ×1
erlang ×1
integer ×1
java ×1
monticello ×1
petitparser ×1
python ×1
seaside ×1
singleton ×1
string ×1
visualworks ×1