标签: smalltalk

与Smalltalk相当的Java变为:

有没有办法将自己(这个)与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)?我可以使用一些已知的设计模式吗?

java design-patterns smalltalk

11
推荐指数
1
解决办法
517
查看次数

如果我的Pharo图像进入无限循环,我该如何突破循环?

昨天我花了大约2个小时来处理我的Pharo图像,当我不小心写了一些代码并执行它导致了一个无限循环 - 实际上,我从另一个方法调用一个方法,然后又调用原始方法,返回永远.pharo图像没有响应.我重新启动了图像,并在那两个小时内丢失了所有工作!

我在线查看,我可以点击alt- .进入某种过程查看器?我怎么能从那里杀死无限循环?

smalltalk pharo

11
推荐指数
2
解决办法
1917
查看次数

你怎么用Squeak?

我下载了Squeak,Image文件和Sources文件,但我无法弄清楚如何编写Smalltalk代码.有什么明显的东西我不见了吗?Squeak甚至是严肃的Smalltalk开发的正确IDE吗?

smalltalk squeak

10
推荐指数
5
解决办法
2044
查看次数

字符串到整数Smalltalk

非常简单的问题我需要从用户获取一个整数,我只知道如何从中获取一个字符串.因此,如果有办法从用户获取整数或将字符串转换为整数,请告诉我.

string integer smalltalk type-conversion

10
推荐指数
2
解决办法
7299
查看次数

延续是Seaside的一个关键特征吗?

我正努力加快Smalltalk/Seaside的速度.根据维基百科,"海边是基于延续的Web应用程序框架".来自Java背景我不太熟悉continuation.

经过一些阅读后,我理解延续用于维护状态,从而保存进程的快照,并可以在以后恢复(类似于将Windows置于休眠模式).

这与使用"后退"按钮的Seaside最相关?使用代码块和"回调"与使用延续不同?

我还试图评估在Seaside实际使用延续的当前重要性.我很困惑,因为许多在线参考Seaside提到延续作为关键和定义功能.但是,我也发现一些文章提到在Seaside使用延续并不常用,实际上并不是一个关键特征.

非常感谢任何有用的输入,让我直截了当!

continuations smalltalk seaside

10
推荐指数
1
解决办法
709
查看次数

如何使用Gofer将Monticello软件包复制到另一个名称下的存储库

上下文是这样的:
一个包在几个存储库中开发了几个分支

  • squeaksource
  • source.squeak.org/trunk

发展停止source.squeak.org,其目标是到分支,以便有发表在一个库中的所有版本转回squeaksource.
但为了方便人们浏览和快速识别分支,我希望在squeaksource副本的名称中添加标准分支标识.
有没有办法自动化这项操作?可能还有Gofer?

smalltalk squeak pharo monticello

10
推荐指数
1
解决办法
266
查看次数

Smalltalk存档在哪里消失了?

我是一个古老的Smalltalk程序员(早在上个世纪90年代初期),在那些日子里,所有Smalltalk"开源"(这个词都没有创造),都可以在曼彻斯特Smalltalk档案馆找到.之后转移到UIUC Smalltalk Archive.我今天尝试在那里找到我的旧条目,但存档不再可用.有谁知道如何检索旧内容?是否存在Smalltalk存档存档的位置?

smalltalk

10
推荐指数
1
解决办法
354
查看次数

为什么Smalltalk中的方法默认返回"self"?

背景

在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>,则结果将是实例本身.

问题

  • 为什么这样设计?
  • 它背后的想法是什么?
  • 哲学背景是什么?
  • 它有什么实际好处?方便链接是否方便?

oop smalltalk visualworks squeak pharo

10
推荐指数
4
解决办法
1553
查看次数

在Pharo解析PetitParser的评论

是否有更简单的方法来解析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 pharo petitparser

10
推荐指数
1
解决办法
265
查看次数

Erlang中的进程/消息和Smalltalk中的对象/消息有什么区别?

我试图了解Smalltalk中的对象/消息与Erlang中的进程/消息之间的区别。我阅读了有关该主题的以下文章

据我了解,在Smalltalk中,所有事物都是一个对象,并且所有事物都具有相同的“对象/消息”抽象-即使数字1是只能通过消息传递才能到达的对象。是1在Erlang / Elixir中进行的过程吗?Erlang中的所有内容是否都是对消息/程序范例的响应?您可以向Erlang中的号码发送消息吗?

非常感谢。

oop erlang smalltalk message-passing elixir

10
推荐指数
1
解决办法
113
查看次数