首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何调试Squeak源代码?

如何调试Squeak源代码?
EN

Stack Overflow用户
提问于 2011-02-14 16:07:45
回答 1查看 488关注 0票数 1

以下是Squeak 4.1中的除法:

代码语言:javascript
复制
/t1
| t2 |
t1 isInteger
    ifTrue: [t2 := self digitDiv: t1 abs neg: self negative ~~ t1 negative.
        (t2 at: 2)
                = 0
            ifTrue: [^ (t2 at: 1) normalize].
        ^ (Fraction numerator: self denominator: t1) reduced].
^ t1 adaptToInteger: self andSend: #/

我不理解代码。你能给我一些关于如何调试代码的提示,这样我就可以跟踪代码的行为吗?就像打开一个工作区,输入4/3,我可以检查成分数。对象有self,numerator,denominator等等。我如何进入4/3,看看Smalltalk是如何实现除法的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-02-14 22:14:52

首先,你的资料来源有问题。方法Integer>>/实际上看起来像这样:

代码语言:javascript
复制
/ aNumber
"Refer to the comment in Number / "
| quoRem |
aNumber isInteger ifTrue:
    [quoRem := self digitDiv: aNumber abs   "*****I've added abs here*****"
                    neg: self negative ~~ aNumber negative.
    (quoRem at: 2) = 0
        ifTrue: [^ (quoRem at: 1) normalize]
        ifFalse: [^ (Fraction numerator: self denominator: aNumber) reduced]].
^ aNumber adaptToInteger: self andSend: #/

其次,此代码仅用于大整数。如果您评估4 / 3,则不使用此方法,而是使用直接创建分数的SmallInteger>>/

要调用您想要的方法,您需要使用大量的数字,例如:

代码语言:javascript
复制
12345678901234567890 / 2

选择此表达式,然后从上下文菜单中选择"debug it“。或者,您可以使用"halt“消息来调用调试器:

代码语言:javascript
复制
12345678901234567890 halt / 2

当调试器弹出时,单击它的" into“按钮进入该方法。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4989974

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档