标签: squeak

如何获得协议中的所有方法?

如何在smalltalk/squeak/pharo中获取给定协议中所有(类)方法的集合?

我正在尝试收集一组方法返回的值.我不想将方法存储在实例或类变量中.所以我虽然可以将它们添加到协议中并以这种方式"标记"它们.

谢谢.

smalltalk squeak pharo

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

学习Smalltalk又名吱吱声的路线

召集Smalltalk宇宙的绝地大师,

我对C++/Python/Perl有所了解,并且已经编写了5年多的编程.

我必须分叉Scratch - MIT的可视化编程语言来增加对机器人工具包的支持.Scratch是使用Squeak创建的,Squeak是Smalltalk的一个实现.

我打算阅读A Little Smalltalk - 由Timothy budd跟随Sqeak By Examples - 作者:Oscar Nierstrasz [http://squeakbyexample.org/]

你认为这是个好主意吗?你会建议什么?我可以看免费视频教程吗?

最终目标是能够理解临时代码库.在我能够理解(截至目前)奇怪的Squeak开发环境及其方式之前,我想先了解一下smalltalk.

卢克小行者

smalltalk squeak mit-scratch

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

在Squeak Smalltalk中撤消删除方法

如何在Squeak Smalltalk中撤消删除方法?

smalltalk squeak

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

为什么添加:返回Smalltalk集合中添加的对象?

背景

捕获每个Smalltalk新手的东西是add:不会返回"自我"但是添加的对象.

例如,使用此代码:

myCollection := OrderedCollection new 
  add: 'Peter';
  add: 'John';
  add: 'Paul'.
Run Code Online (Sandbox Code Playgroud)

myCollection将包含字符串"保罗",而不是集合本身.

这是因为add:返回正在添加的对象,整个级联表达式的计算结果是最后发送的消息.

相反,它应该写yourself在最后:

myCollection := OrderedCollection new 
  add: 'Peter';
  add: 'John';
  add: 'Paul';
  yourself.
Run Code Online (Sandbox Code Playgroud)

问题

  • 为什么会这样?
  • 这样设计的是什么?
  • add:这种行为有什么好处?

oop smalltalk visualworks squeak pharo

8
推荐指数
2
解决办法
375
查看次数

Smalltalk pragma在概念上是什么?

我在Pharo Smalltalk中使用过pragma,并了解它们是如何工作的,并且已经看到了Pharo中使用它们的例子.

我的问题是:

  • 什么是pragmas概念上,
  • 他们用其他语言比较的结构,
  • 什么时候我应该介绍一个pragma?

我已经找到了一篇关于他们历史的有趣文章:大众语用的历史.

smalltalk visualworks squeak pharo

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

在Pharo Smalltalk中向后迭代一个集合

我是Pharo的新手,我正在尝试迭代OrderedCollection,但是从最后开始.

例如:

| c |
c := OrderedCollection new.
c add: (1).
c add: (2).
c add: (3).
c do: [ :each | Transcript show: each ; cr ]
Run Code Online (Sandbox Code Playgroud)

结果却是1 2 3我想要的3 2 1.

是否有可能或者我必须使用其他类型的收藏?

smalltalk squeak pharo

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

是否有使用Squeak Smalltalk的大型商业项目?

我一直在学习Squeak Smalltalk,并注意到它有一个非常忠实的社区,并且在一些大型的学术和开源项目中使用,但我没有找到任何在商业上以任何重要方式使用它的例子.我很好奇这个环境在世界范围内的商业运作方式.也许接管旧的Smalltalk项目?有人知道吗?

smalltalk squeak

7
推荐指数
3
解决办法
1539
查看次数

如何安装squeak smalltalk插件?

我试图将squeakSSL与WebClient一起使用,squeakSSL页面说:

要安装SqueakSSL,您需要下载并安装该插件的二进制版本,然后通过以下方式安装SqueakSSL:

(Installer ss)
project: 'SqueakSSL';
    install: 'SqueakSSL-Core';
    install: 'SqueakSSL-Tests';
Run Code Online (Sandbox Code Playgroud)

我下载了提到的包,它只是一个DLL文件.我在网上找不到你如何安装吱吱声插件.我尝试将它放在VM和Image目录中,但squeakSSL测试失败了.

你如何安装一个吱吱声插件?

smalltalk squeak

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

在更改vm原语时调试VM中的解释器

上下文

作为一个大学项目,我们想要改变pharo vm以使用对象表,看看会发生什么.

我们使用来自github和VMMaker 的pharo-vm克隆.构建VM工作正常.

为了开始,我们添加了一个返回增量Integer的原语:

InterpreterPrimitives>>primitiveIntegerIncrement
    "increments an integer"
    self pushInteger: self popInteger + 1 .
Run Code Online (Sandbox Code Playgroud)

StackInterpreter class>>initializePrimitiveTable据此修改

MaxPrimitiveIndex := 576.
"... and so on ..."
    (575 primitiveFail)
    (576 primitiveIntegerIncrement))
Run Code Online (Sandbox Code Playgroud)

它有效.

问题

当我们对VM进行更改时,我们想要在SmalltalkImage中进行测试运行,因此我们不需要编译并看到它不起作用.

就像是:

StackInterpreter test: '1 inc'
Run Code Online (Sandbox Code Playgroud)

如果原语错误或发生错误,我可以调试.当然需要做得更多,但我怎样才能做到这一点?

我们尝试了什么

  1. VMMaker-InterpreterSimulationStackInterpreterSimulator.尝试评论中的代码

    DoIt
        ^ (StackInterpreterSimulator new openOn: Smalltalk imageName) test 
    
    Run Code Online (Sandbox Code Playgroud)

    错误:

        displayForm := 'Display has not yet been installed' asDisplayText form.
    
    Run Code Online (Sandbox Code Playgroud)

    ByteString不明白 asDisplayText

  2. (CogVMSimulator new openOn: Smalltalk imageName) test 
    (InterpreterSimulator …
    Run Code Online (Sandbox Code Playgroud)

smalltalk squeak pharo vm-implementation

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

是否可以将[和]保留为以下消息:ifAbsent:如果您不需要完整的块?

在Smalltalk(特别是Pharo/Squeak)中,我想知道是否可以省略"["和"]"作为消息的参数,如:ifAbsent:如果你不需要一个块,就像这样;

^ bookTitles at: bookID ifAbsent: ''.
Run Code Online (Sandbox Code Playgroud)

^ books at: bookID ifAbsent: nil.
Run Code Online (Sandbox Code Playgroud)

代码有效,因为(在Pharo/Squeak中)对象>>值只返回self.但我想知道这种用法是如何接受的,或者你是否应该总是键入[和],即使你不关心参数是否被快速评估或多次评估.

smalltalk visualworks squeak pharo gemstone

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