标签: pharo

在集合中的元素之前丢弃元素的最佳方法

鉴于任何字符串,如'Lorem ipsum dolor sit amet,consectetuer adipiscing elit',我想在坐下之前丢弃每个单词.我已经检查过String中的方法但是找不到这个方法非常有用.这是我的尝试:

| phrase newPhrase |
phrase := 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit'.
newPhrase := phrase substrings.
phrase substrings do: [: word | word = 'sit' ifFalse: [ newPhrase := newPhrase allButFirst ] ifTrue: [ ^ nil ] ].
newPhrase joinUsing: String space
Run Code Online (Sandbox Code Playgroud)

在工作区中进行评估时,它会回答为零,但是必须有一个聪明的方法吗?

smalltalk pharo

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

Smalltalk中的树实现

我正在尝试找到树(非二进制)的开源实现,如红黑,B树,2-3树或通用树,理想情况下用于Squeak/Pharo,但其他Smalltalk风格的任何其他实现将是没关系.我见过SqueakSource但是有太多的二叉树包,其中大部分似乎属于学生项目.你知道树的实现吗?

tree smalltalk visualworks squeak pharo

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

无法重构/删除方法

这应该是一个简单的问题.:)

我正在使用Pharo/Seaside.我在IDE中使用了重构功能来重命名和删除我的一些方法和类.到现在为止还挺好.

但是,我在删除覆盖父类的方法时遇到了困难.例如,我有一个"MyClass"类,其子类为"WAComponent".我创建了一个方法"样式",它覆盖了父类中的方法.

我决定我真的不需要覆盖"样式",并且想要重构方法>删除"样式".此时我收到以下提示"可能在WAPresenter中调用样式.浏览引用?"

我该怎么办?我只想要超级的"风格"方法,而不是我自己的覆盖.

非常感谢!

smalltalk seaside pharo

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

subclassResponsibility发送者选择器卡住了

子类责任发送者选择器即使在子类具有实现方法时也会卡住.

我认为这个论点可能会导致这种情况发生,但是呢?

谁能告诉我们为什么?

在抽象类中我们有这个

fromString: aString
    "init with a string"

    ^self subclassResponsibility
Run Code Online (Sandbox Code Playgroud)

我正在运行这个:

unit := (Units new fromString: aString)
Run Code Online (Sandbox Code Playgroud)

然后发生错误.

其中Units是抽象类.

Travis Griggs目前的方法可以消除错误

是否有实例创建方法的doubledispatch?

smalltalk squeak pharo

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

是否有可能在Pharo Smalltalk中实现一个非纯虚拟的抽象方法?

我知道可以通过在具体的方法中调用纯虚方法,使用subclassResponsibility或模板方法来实现纯虚方法.现在,可以创建一个具有默认实现的方法,但必须由子类实现?如果是,如何(在Pharo上)?

示例:假设我想提供一个Collection的子类,它对#add进行一些验证,但是没有实现存储,因此留给它的子类来决定做什么.虽然#add确实有一些实现,但它仍然是完成它的子类责任.

methods inheritance smalltalk pharo

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

pharo中"实例变量名称"和"类变量名称"之间有什么区别?

我刚刚使用系统浏览器在pharo中创建了自己的包(MyPackage)和类(MyClass).这是它的外观.

Object subclass: #MyClass
    instanceVariableNames: ''
    classVariableNames: ''
    category: 'MyPackage'
Run Code Online (Sandbox Code Playgroud)

我理解术语子类和类别,而不是获得其他两个术语(instanceVariableNames,classVariableNames)的含义.

smalltalk pharo

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

将有序集合转换为文字数组

我有一个有序的集合,我想将其转换为文字数组.以下是有序集合和所需结果:

an OrderedCollection(1 2 3)
#(1 2 3)

实现这一目标的最有效方法是什么?

smalltalk squeak pharo

1
推荐指数
2
解决办法
588
查看次数

Pharo中的成绩单指令问题

我已经下载了Pharo 6.0并尝试跟进他的着名或"臭名昭着"的Pharo示例书(我称之为,因为他们在他们的文档页面上提供的书籍从未与编程语言共振)

它在书中说要开一个操场并按照以下说明操作:

成绩单:"你好世界"; CR.

我已经选择了指令并选择了Do It,但没有任何反应,只显示按Ctrl + D作为快捷方式而已.我认为它应该显示在工作区上的消息,但它不起作用.

对此有何帮助?

pharo

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

在Smalltalk的同一语句中分配和比较的效率

一个以前的SO问题提出了有关这成语是在执行efficency方面更好的时间问题:

[ (var := exp) > 0 ] whileTrue: [ ... ]
Run Code Online (Sandbox Code Playgroud)

[ var := exp. 
  var > 0 ] whileTrue: [ ... ]
Run Code Online (Sandbox Code Playgroud)

直观地看,第一种形式似乎在执行期间更有效,因为它节省了一个额外的声明(第二种形式).在大多数Smalltalks中都是如此吗?

试着用两个愚蠢的基准测试:

| var acc |
var := 10000.
[ [ (var := var / 2) < 0  ] whileTrue: [ acc := acc + 1 ] ] bench.

| var acc |
var := 10000.
[ [ var := var / 2. var < 0  ] whileTrue: [ acc := acc + …
Run Code Online (Sandbox Code Playgroud)

benchmarking smalltalk visualworks pharo gnu-smalltalk

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

如何订阅Spec对象(TextInputField)

我有一个带有textArea和textInputField的简单Spec对象.在它旁边,我有另一个Spec不知道的对象.当我将一些文本写入textInputField时,我需要将带有此文本的消息发送到另一个类.我试过播音员,但它不起作用.有没有办法通知其他对象并发送此文本?

events pharo

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

Smalltalks 运行时状态

对于 Javascript,存在解释运行时状态的优秀介绍:http : //latentflip.com/loupe/

对于 Smalltalk,我从未找到类似的关于运行时和图像快照结构的概述。

据说 Smalltalk 图像由可以相互发送消息的对象组成。这会产生很多问题:

  • 一次只有一个物体处于活动状态吗?

  • 是否有启动指定“进程”对象的“根调度程序”?

  • 每个暂停的图像是否都有活动对象的列表?

  • 如果两个活动对象向第三个对象发送消息会发生什么?

  • 一次只能处理一条消息吗?“原子性”的级别是什么?

  • 两个活动对象如何通信?

  • 是否每个对象都有一个接收到但尚未处理的消息的“收件箱”?

  • 每个对象都有一个事件循环吗?

smalltalk runtime conceptual pharo

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

我们如何通过pharo中的特定键对数组中的字典进行排序?

我有一个包含几个字典的数组.如何使用每个字典都具有年龄的密钥对它们进行排序?

an Array((a Dictionary('age'->'20' 'ID'->1254))(a Dictionary('age'->'35' 'ID'->1350))(a Dictionary('age'->'42' 'ID'->1425)))
Run Code Online (Sandbox Code Playgroud)

smalltalk pharo pharo-5

0
推荐指数
1
解决办法
210
查看次数

如何在smalltalk pharo中实现getter

Personsetters和我一起上课,getters喜欢这样:

Object subclass: #Person
instanceVariableName: 'name document'
classVariableName ' '
package: 'foo'

name
^name

name: anObject
name:= anObject

document
^document

document: anObject
document:= anObject
Run Code Online (Sandbox Code Playgroud)

然后我在我的类中实例化 TestPerson

setUp
p1:= Person name:'Alice' document:='12345'
Run Code Online (Sandbox Code Playgroud)

所以在这里我不明白如何实现我的 getter 来比较我的名字是否真的是 Alice。例如在 Java 中它会是这样的:

p1.getName().equals("Alice");
Run Code Online (Sandbox Code Playgroud)

smalltalk pharo

0
推荐指数
2
解决办法
301
查看次数