扩展默认类(SmallInteger)

2024-02-02

我正在尝试使用新的实例方法“square”来扩展 SmallInteger 类。我的想法是我希望能够调用“5 square”,它会返回 25。

使用实例方法扩展您自己的类相当简单,因为您知道变量名称,但我不知道 SmallInteger 类中的变量名称。我怎样才能找到他们?

我认为它应该看起来像这样,但“thisNumber”引用的是这个 SmallInteger 对象恰好是什么数字。

SmallInteger extend [
    square [
        | r |
        r := thisNumber * thisNumber.
        ^r
    ]
]

我不是 GNU-Smalltalk 用户,但通常在 Smalltalk 中,方法的接收者由伪变量表示self。因此你的方法应该看起来像

square
  ^self * self

将方法添加到实例侧SmallInteger类,瞧。

但请注意,已经有一种方法可以做到这一点。它的选择器是squared (with $d作为它的最后一个字符。)所以,你真的不需要添加square但这个例子可能会帮助你更多地理解 Smalltalk。

另外请注意,squared没有定义在SmallInteger但继承自Number。原因是该消息在该层次结构的所有子类中都有意义,并且由于每个子类的实现都是相同的,因此只需在顶部有一个就足够了(某些方言在Fraction为了性能。)

当然,self * self可以返回一个非SmallInteger but a LargePositiveInteger。幸运的是,Smalltalk 中没有什么特别的,因此您可以对任何Number并且它不会被截断为任何特定的位长度。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

扩展默认类(SmallInteger) 的相关文章

  • csdn大师孟岩老师为本书作序——“未来属于动态语言”

    如果你想掌握Ruby 这本书是最好的起点 如果你想运用Ruby 这本书也是案头必备 所以 如果你已经决定要走入Ruby的世界 那么这本书是必经之路 而本不需要一篇 推荐序 问题在于 我们为什么还要学习一种新的语言 特别是当Ruby整体上仍然
  • Smalltalk 中的运算符可以过载吗?

    Smalltalk 中是否可以重载运算符 我正在寻找教程 示例 Thanks Smalltalk 中不可能进行方法重载 相反 方法重写和称为的技术的组合双重调度用于实现与其他语言中的运算符重载相同的行为 您可以在数学运算符中找到示例实现 这
  • GNU Smalltalk - 继承和多参数方法/构造函数

    假设我正在尝试将以下 Java 类转换为 GNU Smalltalk public abstract class Account protected String number protected Customer customer pro
  • 在 Centos 7.4x 上将 OSSubprocess 添加到我的 Pharo 6.1 时出现错误

    我想搞乱OSSubprocess 由马里亚诺 马丁内斯 佩克 来自 CentOS 7 4 上的 Pharo 6 1 我在 内搜索了Pharo Project Catalog并尝试安装它 我收到一个错误 ioLoadModule home s
  • GOF 中提到的可插拔适配器

    Stack Overflow 上与此主题相关的帖子 Post 1 and Post 2 上面的帖子很好 但我仍然无法解答我的困惑 因此我将其作为新帖子放在这里 我的问题基于 GOF 的可重用的面向对象软件的元素关于可插拔适配器的书籍内容 在
  • Smalltalk 块 - 我可以显式设置返回值并停止执行该块吗?

    value 消息发送到块时的返回值是该块中最后一句的值 所以 1 2 3 4 value评估为7 我发现有时很难使用 有没有办法显式设置返回值并停止执行块 作为练习 尝试在不使用我想象的 return 消息的情况下重写此块 看看它会变得多么
  • Smalltalk 如何操作调用堆栈帧(thisContext)?

    Smalltalk 对象thisContext看起来奇怪又奇妙 我不明白它是什么以及它是如何工作的 甚至它如何实现延续 对于 C 的调用堆栈 我可以轻松想象它是如何实现和工作的 但对于这个 我不能 请帮助我理解它 我认为这不是一个简单的问题
  • Pharo Smalltalk 中 = 和 == 有什么区别?

    有什么区别 and 在 Pharo Smalltalk 中 他们叫什么名字 一个isEqual和另一个 equality inequality deep equality inequality shallow 需要考虑的一件重要的事情是 不
  • Smalltalk ReferenceStream 对新实例变量有问题吗?

    在 Pharo Smalltalk 中 我使用 ReferenceStream 序列化对象列表 这是我要序列化的对象的类定义 Object subclass Task instanceVariableNames title notes li
  • 在 Object 类中实现 #doesNotUnderstand 如何导致在 Squeak Smalltalk 中打开调试器?

    我知道该实施标志着MessageNotUnderstood异常 但是最终如何打开调试器呢 当异常在发出信号后仍未处理时 其 defaultAction被调用 MessageNotUnderstood gt gt defaultAction
  • 如何更改 Smalltalk 中变形的位置?二维网格

    我无法更改某些变形的位置 虽然可以通过以下方式将它们从检查器中移走 self position 50 50 例如 我编写了一个函数 该函数应该设置二维变形集合的位置 Cell 是简单 switchmorph 的子类 拥有这个函数的类是 bo
  • Linux 上的 Squeak SMTP

    我正在使用 Squeak 5 类 SecureSMTPClient 通过 SSL TLS 发送电子邮件 它在我的 Windows 机器上运行良好 感谢答案那个问题 https stackoverflow com questions 3761
  • Pharo 5 无头模式下的调试

    我正在无头模式下使用 RFB 运行 pharo 5 海边 pharo vm display null vm sound null app pharo5 Pharo5 0 image no quit 在本地运行良好 带有 XFCE 的 Ubu
  • Smalltalk 中的 self 和 self 有什么区别?

    在 Smalltalk 中 方法体中经常出现两个术语 self and yourself 它们之间有什么区别 保留字self是一个伪变量 不能分配给它 它引用使用它的方法的当前接收者 另一方面yourself是一条消息 您可以发送给任何对象
  • 在没有 GUI 的服务器上运行 Smalltalk?

    我有一个相当明显的问题 我想在生产服务器上运行 Smalltalk 而不使用图形界面 VW 或 Pharo 甚至 Squeak 可能实现这一点吗 我有一个没有 X 的 VPS 托管 并且希望在 Smalltalk 上运行一些网站 同时使用成
  • 在 Smalltalk 实现中测试 Unicode 支持的正确方法是什么?

    考虑到任何 Smalltalk 风格 我应该如何继续检查 Unicode 是否受支持 如果没有支持 我如何检测缺少哪个级别 VM 字体 转换器等 在VM级别你可以尝试Character codePoint 256 or Character
  • 如何在没有副本的情况下向后流式传输集合?

    我想知道如何向后流式传输集合无副本在法罗 吱吱声中 例如 要流式传输 1 2 3 so stream next回报3 then 2 then 1 我知道我可以使用collection reversed readStream but reve
  • Smalltalk 中的简单类定义错误

    我正在尝试使用smalltalkSmalltalk x jv 分支 https swing fit cvut cz projects stx jv 我有以下简单的代码 Object subclass Myclass mainval init
  • 如何在 Smalltalk 中管理二维数组?

    我有一个点列表 必须进行侵蚀 膨胀操作 我需要一种 2d 数组 但在 VisualWorks 中找不到如何操作 我知道 Squeak 中有一个 Array2d 类 但我必须使用 VW 许多 Smalltalk 实现都会有某种 Matrix
  • 海边有规模吗?

    Seaside被称为 异端网络框架 使它成为异端的原因之一是它有很多共享状态 然而 根据我目前的理解 这阻碍了轻松扩展 另一方面 Ruby on Rails 共享尽可能少的状态 众所周知 它的扩展性非常好 即使它与现代的 Smalltalk

随机推荐

  • 标准库算法是否允许复制谓词参数?

    假设我们想从向量中删除重复值ints 通常的解决方案是对向量进行排序并使用擦除删除惯用语删除重复项 但我们需要保持不会被移除的元素的顺序 所以我们无法排序 所以人们可能会想出这样的谓词并使用 with withremove if算法 str
  • 任意或自定义 URL 的 Rails 功能测试

    我的 Rails 应用程序中有一个名为 Photo 的 RESTful 资源 我在用着回形针 http www thoughtbot com projects paperclip为我的照片提供不同的 样式 缩略图等 并且我使用自定义路由来以
  • 是否可以通过 AJAX 加载 tumblr 帖子?

    我只是想知道是否可以通过 AJAX 加载 tumblr 帖子 我知道可以使用注释 但我想内联加载帖子的内容 我不是在谈论无限滚动 Thanks 对的 这是可能的 我编写了一些代码来读取帖子的标题并在我的网站上创建一个菜单 您可以访问帖子的全
  • 如何向我的 UIPageViewController 添加多个 ViewController?

    所以我对 Obj C 很陌生 并尝试查看示例代码和其他在线资源来回答我的问题 但我似乎找不到任何真正有帮助的东西 本质上 我想做的是将我在 Storyboard 中创建的多个 UIViewController 添加到 UIPageViewC
  • 分而治之和递归

    我想知道分而治之的技术是否总是将一个问题划分为同一类型的子问题 通过相同类型 我的意思是可以使用递归函数来实现它 分而治之总是可以通过递归来实现吗 Thanks 总是 是一个可怕的词 但我无法想到不能使用递归的分而治之的情况 根据定义 分而
  • 有条件包含在 linq to 实体中?

    我觉得以下应该是可能的 我只是不确定采取什么方法 我想做的是使用 include 方法来塑造我的结果 即定义沿对象图遍历多远 但是 我希望这种遍历是有条件的 something like dealerships include d gt d
  • 将 numpy 数组保存为 jpg 格式的 io.BytesIO

    我正在使用 xlsxwriter 在 python 代码中将图像插入到 Excel 中 现在 我在 opencv 处理之后有了图像数据 numpy 数组 我想将此图像数据插入到 Excel 中 但 xlswriter 仅支持 io Byte
  • 是否有使用线程池的 std::async 实现?

    标准功能std 异步 http en cppreference com w cpp thread async 模板函数 async 异步运行函数 f 可能在一个单独的线程中 该线程可能是线程池的一部分 并返回一个 std future 它最
  • 我们如何删除 Liferay 徽标、登录超链接和 Powered BY ?从屏幕上

    我使用 Liferay 6 和 Tomcat 进行开发 我为我的应用程序开发了一个自定义登录 POrtlet 现在进入http 本地主机 8086 http localhost 8086 显示我的自定义登录页面 请查看屏幕截图 我的问题是
  • Objective C + Reskit - 如何用键包装我的字典以避免格式问题?

    我正在尝试用密钥包装我的 HTTP POST 请求 换句话说 我想把这个变成 category id gt 1 food name token gt Pizza id gt 1 进入这个 dish gt category id gt 1 f
  • 继承公共接口的枚举中的代码重复

    我有几个符合通用接口的枚举 interface TableColumns String getColumnName int getColumnIndex ColumnType getColumnType boolean isEditable
  • 用C++计算字符串的MD5

    我有一个很好的内存映射文件示例 用于计算文件的 MD5 哈希值 效果很好 没有任何问题 我想改变它来计算字符串的 MD5 哈希值 所以例子是 包括 include
  • 任务计划程序 - 在未登录的情况下运行任务时访问非本地驱动器

    我在 win 调度程序中有一个每分钟运行的任务 该任务运行一个 bat 文件 SVN 会更新一系列文件夹 然后执行一个 perl 脚本 该脚本又会运行其他几个脚本 Perl 脚本的输出 日志 按日期 时间标记 被发送到共享驱动器 而不是任务
  • 弃用警告:危险的查询方法:ActiveRecord >= 5.2 中的随机记录

    到目前为止 common https stackoverflow com a 25577054 2995613从数据库获取随机记录的方法是 Postgress Model order RANDOM first MySQL Model ord
  • 将 ToolStripMenuItem 动态添加到 MenuStrip (C#/ Winforms)

    我已经实施了我的解决方案 基本解决方案 我很高兴 问题是 当我使用 Add 方法向 ToolStripItemCollection 添加新项目时 我得到了一些重载 有意义的重载是字符串参数 图像参数和 EventHandler 参数 因为我
  • 验证三个立方之和等于 33:在 R 中失败,在 Python 中有效

    最近 找到了以下方程的整数解 x 3 y 3 z 3 33 也就是说 它适用于x 8866128975287528 y 8778405442862239 z 2736111468807040 https en wikipedia org w
  • GnuPGME:GPG 签名 C++

    有没有人写过任何教程或有任何关于如何使用的文档GnuPGME http www gnupg org related software gpgme index en html所以我可以编写一个函数 例如gpgSign std string f
  • Session具体是做什么的?为什么不把ip和域名session看成一样呢?

    我想知道session具体有哪些 这不限于一种语言 下面仅以 php 为例 我使用 php session 当我使用我的网站域名时它运行良好 为了在 Windows 操作系统上的本地 vmvare ubuntu 中测试该网站 我更改了 Wi
  • 从中心即时裁剪图像 - Javascript?

    我有一堆图像 它们的宽度和高度各不相同 有些是正方形 有些是矩形 但我希望它们全部都是我选择的宽度和高度 我知道我可以在中使用 width 和 height 那么 我正在寻找的是一个可能的 javascript 解决方案 也许使用 jQue
  • 扩展默认类(SmallInteger)

    我正在尝试使用新的实例方法 square 来扩展 SmallInteger 类 我的想法是我希望能够调用 5 square 它会返回 25 使用实例方法扩展您自己的类相当简单 因为您知道变量名称 但我不知道 SmallInteger 类中的