有没有办法将自己(这个)与Java中的其他对象交换?
在Smalltalk我们可以写
Object subclass:myClass [
"in my method I swap myself with someone else"
swapWith:anObject [
self become:anObject.
^nil
]
]
myClass subclass:subClass [
]
obj := myClass new.
obj swapWith:subClass new.
obj inspect.
Run Code Online (Sandbox Code Playgroud)
结果An instance of subClass显然是.
我需要在Java中做以下事情:
那么,简而言之,我如何在Java中实现self become: (someClass new:someParameters)?我可以使用一些已知的设计模式吗?
昨天我花了大约2个小时来处理我的Pharo图像,当我不小心写了一些代码并执行它导致了一个无限循环 - 实际上,我从另一个方法调用一个方法,然后又调用原始方法,返回永远.pharo图像没有响应.我重新启动了图像,并在那两个小时内丢失了所有工作!
我在线查看,我可以点击alt- .进入某种过程查看器?我怎么能从那里杀死无限循环?
我下载了Squeak,Image文件和Sources文件,但我无法弄清楚如何编写Smalltalk代码.有什么明显的东西我不见了吗?Squeak甚至是严肃的Smalltalk开发的正确IDE吗?
非常简单的问题我需要从用户获取一个整数,我只知道如何从中获取一个字符串.因此,如果有办法从用户获取整数或将字符串转换为整数,请告诉我.
我正努力加快Smalltalk/Seaside的速度.根据维基百科,"海边是基于延续的Web应用程序框架".来自Java背景我不太熟悉continuation.
经过一些阅读后,我理解延续用于维护状态,从而保存进程的快照,并可以在以后恢复(类似于将Windows置于休眠模式).
这与使用"后退"按钮的Seaside最相关?使用代码块和"回调"与使用延续不同?
我还试图评估在Seaside实际使用延续的当前重要性.我很困惑,因为许多在线参考Seaside提到延续作为关键和定义功能.但是,我也发现一些文章提到在Seaside使用延续并不常用,实际上并不是一个关键特征.
非常感谢任何有用的输入,让我直截了当!
上下文是这样的:
一个包在几个存储库中开发了几个分支
发展停止source.squeak.org,其目标是到分支,以便有发表在一个库中的所有版本转回squeaksource.
但为了方便人们浏览和快速识别分支,我希望在squeaksource副本的名称中添加标准分支标识.
有没有办法自动化这项操作?可能还有Gofer?
我是一个古老的Smalltalk程序员(早在上个世纪90年代初期),在那些日子里,所有Smalltalk"开源"(这个词都没有创造),都可以在曼彻斯特Smalltalk档案馆找到.之后转移到UIUC Smalltalk Archive.我今天尝试在那里找到我的旧条目,但存档不再可用.有谁知道如何检索旧内容?是否存在Smalltalk存档存档的位置?
在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 ×10
pharo ×4
squeak ×3
oop ×2
elixir ×1
erlang ×1
integer ×1
java ×1
monticello ×1
petitparser ×1
seaside ×1
string ×1
visualworks ×1