我在Pharo 2.0的Glamour浏览器中使用Roassal绘制了一个动态调用图
默认情况下,不仅可以单击节点,还可以单击边
由于我没有更多的信息显示的边缘,我希望他们不可点击。如何删除“可点击性”
这就是我在Glamour浏览器中绘制调用图的方式:
methodsUnderTestAsCallGraphIn: constructor
constructor roassal
painting: [ :view :testFailure |
我刚接触smalltalk/pharo/seaside,使用简单的WACounter时遇到麻烦。
我创建了一个组件并添加了以下内容:
wa := WACounter new.
html render: wa.
计数器显示在my localhost中,但不会在单击时增加/减少。这一定很傻,但我找不到发生了什么事。
谢谢您应该将计数器设置为实例变量,例如
counter
^ counter
及
然后,您的孩子也应该回答这个问题:
children
^ Array with: se
如何在Pharo(3.0版)上添加MC包
通过单击进入空世界打开“世界”菜单
选择Monticello浏览器
单击左上角的+软件包
输入要设置版本的软件包的名称(必须与用于放置软件包的软件包名称相同)
关于包裹名称的说明
-充当子包分隔符,即您可以有多个具有相同前缀的Monticello包,例如MyPackage Core Model、MyPackage Core View和MyPackage Tests。如果您创建一个名为MyPackage的Monticello软件包,它将包括所有子软件包(即
我有一小段代码,它似乎不起作用,测试对象是否相同
something := ((selectedTab value) == registerObject).
或:
((selectedTab value) == registerObject) ifTrue: [ "this never get's executed" ]
我已经在两个实例上“探索指针”了“selected value”与“registerObject”具有完全相同的id,我甚至在括号中添加了引导
有人能告诉我这个问题吗?
我读过很多关于建筑的书,引用了Smalltalk语言的例子。我不了解Smalltalk gui(按钮,文本字段)。在Smalltalk中,您可以扩展Button类和其他gui吗?大多数(所有?)Smalltalk方言让您可以直接访问环境本身的源代码,这意味着您可以随意更改、破坏和扩展它。这适用于大多数事情……GUI、集合、语言解析器、交换true和false的值,以及更多
这给了您巨大的力量,但如果您正在更改核心组件(例如语言解析器),您当然必须格外小心-这是一个动态系统,系统的任何更改通常都会
几天前我正在学习Smalltalk,我正在做一个项目,基本上是为Circle类找到面积和周长,这个类是从Shape类实现的。换句话说,形状是圆的一个超级类
当我运行我的代码时,我得到一个错误,它是“numeric primitive expected numeric argument,get”。我认为发生错误是因为我将整数与浮点值相乘。我不知道如何修复错误,所以如果有人能给我一些建议
另外,我正在使用usmalltalk,这是Smalltalk的一个特定版本,但它具有相同的功能
(class S
我想知道是否有人能帮助我解决Smalltalk中的以下问题。特别是Cincoms Visualworks
我想编写一个简单的GUI,它有三个字段,并按如下方式处理它们:
第一个字段输入一个数字(5)
第二个字段仅显示第一个字段的两倍(因此在本例中显示10)
现在,有趣的是。。。第三个字段显示一个完全不同的类的值(我们称之为X类)。然而,每当X类中的值发生变化时,该值必须显示在GUI上——它不能等待更新按钮的按键。类X中的值可以来源于(比如)工作区
我想我可以通过方面适配器来实现这一点,但我似乎无
一个新手问题,new和initialize之间有什么区别?使用new创建一个新对象,而initialize方法在创建新对象时执行,并初始化对象。。发送消息“new”时,它不仅创建对象,而且发送消息“initialize”。这使您可以自定义对象的初始化。看:
Behavior >> new
"Answer a new initialized instance of the receiver (which is a class) with no indexable variables.
如何模拟在执行其他代码时按住某个键(ctrl)?以下方法的实现是什么
self ctrlDownWhile: [self doSomething]
您可以尝试通过更改输入状态的“ctrlDown”状态来“欺骗”输入状态。
坏消息是它没有setter方法来访问它(可能仅在我的版本中),因此您可能需要使用以下技巧:
ctrlDownWhile:aBlock
"aBlock will see ctrlDown as true"
|indexOfCtrlState|
indexOfCt
我在使用WAFileMetadataLibrary时发现了一个可能的问题
addFileAt: aPath relativeToRootDirectory: relativeRootDirectory.
我遇到的问题是一些带有(../img/someImage.png)的css被指向
http://localhost:8080/files/img/someImage.png
而不是
http://localhost:8080/files/MyWAFileMetadataLibrary/img/
我正在Windows 8中运行Cincom VisualWorks 7.9.1版。当我打开类浏览器并查看库类时,它无法显示源,而是显示如下错误注释:
" ***This is decompiled code.***
This may reflect a problem with the configuration of your image and its sources and changes files.
Please refer to the documen
如何更改Squeak或Pharo中默认的白色窗口背景色?我不熟悉smalltalk和Morphic,我查看了Morphic类,但没有找到正确的实例变量。谢谢。我想这个问题可能更接近你的需要
看起来您可能必须使用平铺窗口管理器
您需要这样做:
| morph |
SystemWindow new
addMorph: (morph := Morph new) fullFrame: LayoutFrame identity;
openInWorld.
morph color: C
在Pharo中运行以下代码时,我收到了以下消息:
消息未理解:OrderedCollection>>转录本
当用“oc”替换“self”时,我仍然得到相同的错误。我正在寻找一种方法来输出收集使用成绩单
为什么成绩单不能接收我的代码?记住对象消息:参数语法:您试图将成绩单消息发送到oc对象,然后使用self参数将show:消息发送到该对象返回的对象
您真正想做的是让转录本对象显示:您的oc对象。这样做:发送Transcriptshow:消息,并将oc作为参数:Transcript show:oc。
我在Smalltalk中找到了关于逐行读取文件的文档,但我需要逐字阅读。我们如何在Smalltalk中做到这一点?如果您能识别Smalltalk的方言(Squeak、Pharo、VisualWorks、VA、GemStone等),这将很有帮助。在任何情况下,无论您发现哪个类有#“nextLine”方法,都应该有一个回答单个字符的#“next”方法。@Dan最近有另一个关于位访问和位操作的问题。请使用搜索来查找它。如果答案不够,请提出新问题。
我正在努力找出是否有一种方法可以提供输入
到gst a.st b.st的交互命令-
并重定向输出。通常,交互缓冲区将
拥有st>…并且当您键入命令时,它将通过调用
将默认/覆盖displayString方法添加到交互式输出。如何获得输入
并使用linux命令或一个小型smalltalk测试脚本来输入输出。
谢谢。这是一个精心设计的演示程序。它从标准输入读取字符串,直到EOF,对其进行排序,然后打印出来:
input := stdin nextLine.
c := OrderedCollectio
我有一个旧的VW3/ENVY图像,其中一个包作为非托管代码加载(正是这种情况所警告的)。不幸的是,这个问题发生在很久以前,现在在不加载包裹的情况下“返回”图像已经太晚了
显然,有一种方法可以解决这个问题(我们有一个开发映像已经解决了这个问题,并且有一些普通的配置映射包含与非托管包完全相同的代码,但它们无法加载),但确切的方法早已被遗忘(将特定的dev映像作为新运行时映像的基础存在一些问题,因此我需要了解如何再次执行该操作)
理论上,应该可以从配置映射中删除包并重新加载代码。在实践中,所有常规方法
我对squeak/squeak source是新手,我正在写一个小游戏作为学习练习。我有一些用于我的一些精灵(主要是PNG)的图形,但我不知道如何将它们添加到我的squeak源代码库中
有没有一种方法可以将这些文件添加到我的项目中,这样我的团队就不必一直通过电子邮件互相发送图像
谢谢
==最终解决方案===
根据Lukas的建议,我最终创建了一个只包含生成图像的方法的类。不幸的是,实际上编写这些方法是一种痛苦(尤其是对于大型图像)
因此,我在类上创建了一个helper方法,允许您动态添加图像消息
三个Smalltalk web应用程序框架之间有什么区别
一些出发点:
每个框架的最佳点是什么?在哪种情况下,您会使用其中一种
他们的弱点是什么
哪一个有最干净的URL
他们如何处理Ajax
他们对持久性的使用有偏好吗
我只是想确定哪种框架适合每种应用程序。我只能回答Seaside:
Target:Seaside以复杂的web应用程序为目标,重点关注可重用性和开发效率。有自动会话状态管理和后退按钮支持。这两本免费的在线书籍并提供文档
缺点:对于RESTful URL,您必须做一些额外的工作
像ifEmpty:ifNotEmpty:、ifEmpty:、ifNotEmpty:ifNil:ifNotNil:、ifNil:和ifNotNil:这样的消息的当前状态是什么
它们在Smalltalks中可用吗?它们的行为是否一致?在旧代码中仍然可以看到“object isEmpty ifTrue:[…]ifFalse:[…]”之类的内容。目前,我认为以下代码很好地涵盖了最新技术:
便携性
[……]
不要使用这些方法中的任何一种,它们在某些平台上丢失、损坏或具有不同的语义:
[……]
对象:\i
在Pharo Smalltalk中,有没有办法判断当前映像是运行时映像还是开发映像?我想创建一种方法来发出关闭运行时映像而不是开发映像的信号 Smalltalk映像中没有“运行时”与“开发”这样的内在区别。但是,由于这是一个实时环境,您可以按照自己的意愿来表示,例如通过单例。比如:
SessionType class>>uniqueInstance
^ uniqueInstance ifNil: [ uniqueInstance := self new ]
SessionTyp
在一个考试示例中,他们询问语句是否有效,如果有效,返回的内容:
对象类超类
我一个人无法理解那么多信息。求求你,救命 假设Object是类型系统的根,您只需仔细遵循以下规则:
每个普通类X都是其元类X类的实例
每个元类X类都是普通类元类的实例
元类继承图遵循常规对象继承图,除了根对象继承自nil,其元类继承自Class
因此,这将是:
| Expression | Type |
|-------------------------
我是Smalltalk(Squeak)的新用户(实际上是在课程中学习)。
我有一个方法来检查一个矩形是否等于一个给定的矩形,如下所示:
isEqual:givenRec
self a = givenRec a
ifTrue: [
self b = givenRec b
ifTrue: [
^true
].
^false
].
self b = givenRec a
if
我现在开始了几个月的Smalltalk学习之旅。我从一开始就知道Smalltalk有几种“方言”(也许“方言”不是最好的词),但我指的是视觉作品、Squeak和Dolphin,仅举三种。到目前为止,我的尝试仅限于视觉作品和吱吱声。但我现在发现,Squeak似乎正在蜕变(双关语的意思!)为其他几种变体,例如Tweak、Pharo、Cobalt和Croquet
谁能解释一下:
a) 为什么会出现这些举措(调整、法罗、槌球和钴)?
b) 我应该花点时间跟上进度吗?记住我是个闲聊新手?
c) 为什么这样
我想澄清一下退货的优先顺序
语句,它似乎违背了一般的优先顺序
规则
例如表达式
^ 2 + 3.
返回5(这是我想要的),但它不应该只返回2吗
哪个^1的优先级高于二进制+的优先级?Smalltalk的^1真的是一个运算符吗?我想这是一个相当保守的象征。当周围的方法返回时,“悬空”+3会发生什么情况?我认为这个行为是正确的,因为return语句是“正常”Smalltalk方法中发生的最后一个语句
返回符号^是为数不多的语言内置结构之一。Smalltalk将返回^symbol后面表达式的值。S
我是Smalltalk技术的新手。我的编程经验是用C和C++编写的。我想了解smalltalk的设计方法。有谁能推荐一些在smalltalk中开发的简单实时应用程序来帮助像我这样的初学者探索smalltalk的途径吗。
目前,我正在Pharo上试验我的smalltalk学习。我猜Pharo现在被最广泛地用于构建web应用程序和作为研究平台。查看,了解如何使用Pharo构建web应用程序。下载Seaside的一键式图片,看看里面的寿司店
如果您打算构建更传统的GUI应用程序,这是可能的。但它正变得
我正在拼命尝试在Smalltalk中编写一个非常基本的方法来逃避HTML标记(“”)
到目前为止,我的想法是:
escapeHtml: str
|tags newString tmpString|
newString := String new.
tags := Dictionary new.
tags at: '<' put: '<'.
tags at: '>' put: '>'.
tags keysAnd
当前是否有方法高亮显示表中的行?例如,我想列出一个条目表,并能够突出显示一行,然后单击“处理”。我在网上找不到任何这样的例子——我相信有办法,对吧
高亮显示行可以基于单选按钮来完成-用户为要更新的行选择单选按钮,然后单击处理或他们想要的任何按钮,然后将对该行执行该操作
任何关于我应该看的地方的帮助(或者只是一个简单的例子)都将不胜感激 如果要使用单选按钮,请尝试在其上添加jQuery操作
比如:
onClick: ((html jQuery: #tableRowId) toggleClass:
我在Windows pc中设置了Monticello HTTP存储库。在pharo 2.0中将我的项目发布到Mac上的存储库之后。后来,我尝试在windows中的另一个2.0映像上加载该项目,发现了此错误。找不到EOCD位置。但我可以在mac中的另一个映像中加载该项目
有人知道缺少什么吗?我的Pharo映像创建的.mcz文件格式不正确。在重试整个过程后,我成功地发布到HTTP存储库,然后能够从windows和mac加载
当AIDA向我的FireFox或chrome浏览器发送包含丹麦字符的文本字符串时,它们显示为�. 我试过:
(AIDASite命名为:'PIYHsite')默认语言:'DA'
并在站点中控制站点设置,其内容为:defaultLanguage='DA',未成功
有没有关于我忽略了什么的提示?
提前谢谢
索伦
增编。AIDA使用UTF8编码,在查看源代码后,我可以看到defaultLanguage='DA'的设置实际上是为不同的语言选择不同的sourcedokuments。因此,它不会改变人们看到的
我被一件简单的事情困住了,我不能理解请帮我解决我真的被困住了
我需要创建一个动态变化的linemorp
从点开始100@100至鼠标位置
如何实现它?您应该创建自己的morph子类来处理鼠标事件。或者您可以使用现成的手柄:
| line handle |
line := (LineMorph from: 100@100 to: 100@100 color: Color red width: 2) openInWorld.
handle := HandleMorph new forEachPoin
当我尝试在Sub上运行print\u超类方法时,我得到
> Sub new print_superclass.
Sub
我希望在这里得到Sup,因为class调用被移回Sub的超类,即Sup。为什么会这样呢?因为super是一个指向消息接收者的伪变量。
Super和self指向同一个对象并具有相同的标识
super == self ---> true
它们之间的区别在于super告诉消息查找开始搜索方法字典“上面”中包含该方法的下一个
定义令人困惑,但在本例中,super仅表示对
我应该如何创建(const char**)以将其传递给C函数
假设我的常量字符**被命名为提示符,那么:
user := 'User:' copyToHeap: #malloc:.
pwd := 'Password:' copyToHeap: #malloc:.
prompts := (ByteArray new: 64) copyToHeap: #malloc:.
prompts copyAt: 0 from: (user referentAddress asByteArraySize
我一直在试图在git上找到lively内核的副本,但它似乎在git上不可用。LK的源代码在任何其他公共访问SVN上都可用吗?他们已将其发布在lively kernel.org/development上。尝试一下svncolk\u trunk在Lively内核中的开发与传统的Web开发有很大的不同,因为所有的开发都是在wiki中在线进行的(http://lively-kernel.org/webwerkstatt). 这个wiki是基于SVN的,可以签出,但通常不需要这样做
请注意,位于的存储库不
考虑到像“Lorem ipsum dolor sit amet,Concertetuer Adipising Elite”这样的字串,我想在坐下之前把每个字都扔掉。我已经检查了字符串中的方法,但没有发现对这个方法非常有用。这是我的尝试:
| phrase newPhrase |
phrase := 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit'.
newPhrase := phrase substrings.
phrase s
我试图找到字符串的值。例如:
'abc' == 6 (1+2+3)
但是我在下面的“+元素”部分得到一个错误:
MessageNotUnderstood: Character>>adaptToNumber:andSend:
有人能帮我一下吗
wordValue: inString
|value|
inString asUppercase.
value := (inString do: [ :ch | inString inject: (ch ascii
有人能给我举个例子,说明如何在Smalltalk中使用printFormat:方法格式化字符串吗
例如:
“123456789”printFormat:a格式应返回类似$123456789.00的值。在smalltalk中查找方法用法示例的正常方法是选择它,然后搜索发件人。大多数Smalltalk(大众、Squeak、Pharo、Dolphin、Amber等)都有一个键盘快捷键
如果这个数字太大,您可能想看看实现者
Smalltalk通常没有什么帮助文本和注释,但有很多使用特定构造的真实代码
我
当您想对某个实例进行垃圾收集时,可以发送什么消息
我正在开发一个基于Seaside的应用程序,很多事情都会失控,包括我的RootComponent有10个实例(这正常吗),我想要一个新的开始(不是新的图像)
稍后编辑:读了一点之后,显然这个问题在自动垃圾收集的世界里是一个令人讨厌的问题,所以让我重新措辞。没有办法让VM垃圾收集成为一个特定的对象。您可以计算Smalltalk garbageCollect.以强制垃圾收集,但这只会触发VM对所有对象的垃圾收集机制
根据我的经验,这里通常有两个问题:
什么是将调试窗口复制到剪贴板的方便方法,这样我就可以将它粘贴到某个流行的编程QA站点上;) 在Pharo中,一个方便的方法是带上光环并单击“菜单光环”(红色图标),然后导出->PNG、JPEG等
要使光晕(在窗口中)出现,请按住Alt+Shift键并单击。如果光晕出现在窗口内部的变形中,请再次单击,直到到达外部窗口
我有一个第三方程序,它是用“Visual Smalltalk 3.1.0 Enterprise”编写的,它是在exe中的“.image”资源中编写的
我的问题是如何从这个资源开始修改这个程序的一些小东西?exe文件的.image部分包含一个“Smalltalk image”。这不是您直接更改的内容,而是由Smalltalk开发环境生成的。该映像包含代码(以IL形式)和“保存到磁盘的活动对象”
exe文件“只是一个加载器”,它启动虚拟机,将图像加载到内存中,然后启动应用程序。如果您有源代码,您可以
我想在Pharo 4中拆分一个字符串。我的意见是
'a %% b %% c %%% d %% e %% f'
我想得到
#('a %% b %% c' 'd %% e %% f')
因此,分隔符为“%%”
在它的工作很好:
'a %% b %% c %%% d %% e %% f' subStrings: ' %%% '
#('a %% b %% c' 'd %% e %% f')
但在这方面,我们似乎已被打破:
'a %% b %% c %%% d %% e %% f' subStri
在PetitPasser2中,如何匹配一组封闭的标记,如月份名称?例如(在伪代码中)
[:word | MonthNames anysuccess:[:mn | mn beginsWith:word]]aspasser.
PPPredicateSequenceParser似乎是一种可能性,但您似乎必须事先知道字符串大小。我想我可以这样做:
| monthRules |
monthRules := Array streamContents: [ :unamused: |
M
在中,提出了一个挑战(第2.15.2节),其中包括获取电子邮件地址并获取相关的gravatar图像作为变形对象。通过在操场上运行以下代码,我能够做到这一点:
| url email |
email := 'stephane.ducasse@inria.fr'.
url := 'http://www.gravatar.com/avatar/', (MD5 hashMessage: email) hex asString , '.jpg'.
(ZnEasy getJpeg: url) asMorph
我最近非常喜欢Seaside web框架。我想开始挖掘源代码,找出它是如何工作的。不幸的是,有很多课程,我不知道从哪里开始!有人知道我应该先了解哪些课程吗?我假设某个地方有一个路由类,我应该从它开始…我假设你读过海边的书
如果您想更深入地了解,只需查看源代码,从类WAComponent和WARenderCanvas+WAHtmlCanvas开始。路由类是WAAdmin,意思是“这是注册不同海滨应用程序的地方”。有几个部分很有趣。从WARenderCanvas开始,了解生成html的dsl是如何
我在数组中收集了一些已编译的方法,现在想在浏览器中手动查看它们。不知何故,我在《法罗》的“反思”一章中无法通过示例找到解决方案
如何在Pharo(1.4)中的已编译方法集合上打开浏览器?或:系统导航默认浏览器消息传递者:(methodsCollection Collection:#methodReference)名称:“我的方法”顺便说一句,我很惊讶我不能只做:SystemNavigation default browseMessageList:methodsCollection名称:“我的方法
我想要一个只识别0到32767之间的数字的解析规则。我试过这样的方法:
integerConstant
^ (#digit asParser min: 1 max: 5) flatten
==> [ :string | | value |
value := string asNumber.
(value between: 0 and: 32767)
ifTrue: [ value ]
在Pharo Smalltalk中,我使用ReferenceStream序列化对象列表--下面是我序列化的对象的类定义:
Object subclass: #Task
instanceVariableNames: 'title notes list project dateNextAction dateCreated dateCompleted importance selected'
classVariableNames: 'Database'
poolDictionaries: ''
cat
我对Smalltalk不熟悉,所以请容忍我。我只是想用变形画一幅简单的画
现在我可以创建圆和线,但是我在调整工作区中的起点和终点时遇到了问题
如果你能提供任何建议,我将不胜感激
man := Morph new.
head := CircleMorph new color: Color blue.
body := LineMorph new.
man addMorph: head.
man addMorph: body.
man openInWindow.
verticesAt:put:允许
我现在正试着自学Smalltalk,但我仍然不知道如何调用我编写的函数。我试图用参数'Derpy'调用函数printSomething,使用语句printSomething:'Derpy.,但它没有调用函数,而是产生了以下错误:prog.st:3:预期表达式
我在这里做错了什么?在Smalltalk中使用参数调用函数的正确方法是什么?到目前为止,我读过的教程都没有回答我的问题,我仍然有点困惑。您是在哪个类中定义这个方法的?您没有指定要将消息发送到哪个类(告诉它执行该方法)
在Transcript
如何将块及其参数发送给方法?因此,方法接收块,块接收参数,我在方法iteslf中运行块…例如,请查看OrderedCollection的sort:方法(您将在SortedCollection>>mergeFirst:middle:last:into:by:中找到最后计算的块)。
在接受块作为参数的方法中,您将计算块,这意味着使用参数调用它并使用结果。不要试图“访问块的参数”
例如,您可以向颜色集合发送带有块作为参数的消息,以按亮度对其进行排序:
colors := OrderedCollecti
假设我有一个函数,在每次刷新后不断向集合添加一个随机数
Myfunction
|列表长度数据|
z:=设置为新。
x:=8。
数据:=每次刷新后收到的数据。
长度:=数据大小。
1到:长度do:[:k |列表:=位于:k的数据。
列表
1 2 3 4 5 6 ...
下一页 最后一页 共 14 页