标签: pharo

我可以使用交互式命令行进行Squeak/Pharo开发吗?

我试图将Squeak/Pharo安装到Ubuntu服务器机器上.

./squeak -vm-display-null ./Pharo-1.2.2-12353/Pharo-1.2.image
Run Code Online (Sandbox Code Playgroud)

它执行了,但没有命令行.没有GUI就无法使用?

user-interface smalltalk squeak command-line-interface pharo

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

Smalltalk绑定

我对smalltalk不是很熟悉,但是当我初始化自己的类时,我正在尝试做的是覆盖另一个类'new'.这与Class >> bindingOf有什么关系:?

编辑:

我想要实现的是:如果ObjectA调用new,则ObjectB处理请求.
ObjectB与ObjectA无关.
这可以通过仅改变ObjectB的实现来完成吗?

编辑:我ObjectB在这个故事中是一个ObjectTracer和我想要它做的是表现得像一个包装类ObjectA.我是否更改ObjectAnew使用类的方法字典的实现,以及如何完成?

编辑:这是我想要的:

| obj |
obj := ObjectA new.
obj aMethod.
Run Code Online (Sandbox Code Playgroud)

而到底发生了什么的是,当new被送到ObjectA,它与所提供的实施方案替换的ObjectB(包装)和像aka.nice和埃尔南在他们的答案中提到,ObjectB使#doesNotUnderstand处理用于消息ObjectA.
从本质上讲,是有可能,然后,所有我需要的是让ObjectB更换ObjectA#new

smalltalk squeak pharo

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

如何显示Pharo 2欢迎信息?

我关闭了标题为"欢迎使用Pharo 2.0"的工作区.我该如何再次打开它?

pharo

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

从多个参数创建对象的类方法

在Pharo中我想创建一个类方法,它创建一个新的person对象,并在一个方法中设置一个名称和年龄(两个参数)

Object subclass: #Person
        instanceVariableNames: 'name age'
        classVariableNames: ''
        category: '...'  
Run Code Online (Sandbox Code Playgroud)

但是我无法访问类方法中的实例变量.

name: n : age: a
        "Class method that creates a Person Object and defines its name and age"

        | person1 |
        person1 := self new.
        person1 name := n. "Unable to compile past this point due to red syntax highlighting
        person1 age := a.
        ^person1.
Run Code Online (Sandbox Code Playgroud)

我的目标是能够致电:

aPerson := Person name: 'Pharo' age: '4'
Run Code Online (Sandbox Code Playgroud)

smalltalk pharo

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

在Smalltalk中调用构造方法

我有一个制作汽车对象的课程.它有两个实例变量:Make和Color.我在工作区内调用此方法时出现问题(如下所示)

类方法-Constructor

make: aMake color: aColor
    "Creates a new car object, sets its instance variables by the arguments"
    |car|
    car := self new.
    car setMake: aMake setColor: aColor. "accessor method below"
    ^car
Run Code Online (Sandbox Code Playgroud)

存取方法

setMake: make setColor: color
    "sets the instance variables"
    Make := make.
    Color := color.
Run Code Online (Sandbox Code Playgroud)

工作区(调用代码)

|car|
car := Car make: 'toyota' color: 'red'
Run Code Online (Sandbox Code Playgroud)

调用此行时,我收到"消息未被理解".这是什么问题?

smalltalk pharo

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

Smalltallk - 如何在类的对象(当前实例)中获取所有实例变量的数组(或集合)?

假设我们有一个类,我们实例化它,创建该类的实例.该实例有一些我需要使用的由类定义的(实例)变量.我想把所有这些(实例)变量放在一个数组或一些Collection中,这样我就可以迭代它们并将它们设置为某个值,而不是nil.

我怎样才能做到这一点?

smalltalk pharo

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

评估Pharo中的不平等

由于我不了解Pharo smalltalk中的任何不等运算符,因此很难检查字符串的不等式.这是我目前的代码:

[ contact password = contact confirmPassword and: firstTime = false and: (contact password = '' ifTrue:[^false])]   whileFalse: [ code]
Run Code Online (Sandbox Code Playgroud)

即这部分:
(contact password = '' ifTrue:[^false])

我究竟做错了什么?有没有更好的方法来检查字符串是否为空?

boolean-logic smalltalk squeak boolean-expression pharo

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

Seaside:CannotDeleteFileException:无法删除旧版本的燃料文件

在主页上的pharo海滨应用程序按钮上单击所有数据将保存在一个类名为Test.fl的燃料文件中.如果我在两个实例中一次调用同一个主页,则两个都调用以下代码来保存带有最新更新的Test.fl文件,

FLSerializer
    serialize: self allObjects
    toFileNamed: self name , '.fl'**
Run Code Online (Sandbox Code Playgroud)

并获得例外:

CannotDeleteFileException:无法删除旧版本的文件...\Pharo3.0\Test.fl

我已经使用Mutex允许在第一个实例之后执行另一个实例,

mutexBlock := Mutex new.
mutexBlock critical: [
    FLSerializer
        serialize: self allObjects
        toFileNamed: self name , '.fl' ]
Run Code Online (Sandbox Code Playgroud)

但我仍然得到同样的错误

CannotDeleteFileException:无法删除旧版本的文件

请有人帮我解决这个错误.

smalltalk seaside pharo

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

在Pharo中重新加载键盘快捷键定义

我一直在使用Pharo 7.0中的键盘快捷键.我想#jumpToNextKeywordOfIt在Smalltalk编辑器中修改绑定,所以我在buildShortcutsOn方法的定义中得到了以下更改:

(aBuilder shortcut: #jumpToNextKeywordOfIt)
    category: RubSmalltalkEditor name
    default: $y meta shift
    do: [ :target | target editor jumpToNextKeywordOfIt: true ]
    description: 'Jump to next keyword'.    
Run Code Online (Sandbox Code Playgroud)

我的第一个想法是,只是保存这个定义应该立即生效,但事实并非如此.然后我想,也许因为这是方法定义的一部分,然后在编辑器类上调用这个方法就可以了.现在,该方法需要一个参数aBuilder,我真的不知道那是什么.所以出现两个问题:

  1. 这是将键绑定更改应用于正在运行的编辑器的正确方法吗?
  2. aBuilder在这种背景下是什么,如何得到它?

smalltalk key-bindings pharo

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

如何检查两个数组是否包含相同的元素?

有没有简单的方法来检查两个数组是否包含相同的元素

true如果数组相同,这是我返回的尝试:

arr1 := #(1 3 5 6).
arr2 := #(1 2 3 4).
arr2Copy := arr2 copyFrom: 1 to: arr2 size.
arr1 size ~= arr2 size
    ifTrue: [^ true].
arr1
    do: [:a | (arr2copy removeFirst = a)
        ifFalse: [^ true]].
^false
Run Code Online (Sandbox Code Playgroud)

smalltalk squeak pharo

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