可以创建一个独立的方法/函数(没有任何类)

2024-06-19

我正在尝试理解闲聊。是否可以有一个独立的方法/函数,它不属于任何特定类,并且可以稍后调用:

amethod ['amethod called' printNl]. 
amethod.

上面的代码给出以下错误:

simpleclass.st:1: expected Eval, Namespace or class definition

我该如何使用Eval or Namespace正如错误消息所建议的那样?

我尝试了以下但没有任何效果:

Eval amethod [...
amethod Eval [...
Eval amethod Eval[...        "!"

Eval [...有效,但我想为该块命名,以便稍后调用它。

以下也可以工作,但会立即执行,并且在稍后调用时不会执行。

Namespace current: amethod ['amethod called' printNl]. 

感谢您的见解。


在 Smalltalk 中,相当于独立方法的是Block(又名BlockClosure)。您可以通过将 Smalltalk 表达式括在方括号内来创建它们。例如

[3 + 4]

要评估一个块,您可以向它发送消息value:

[3 + 4] value

这将回答7.

块也可能有参数:

[:s | 3 + s]

你评估他们value:

[:s | 3 + s] value: 4  "answers with 7"

如果该块有多个句子,则用点分隔它们,就像在方法体中所做的那样。


Addendum

Smalltalk 中的块是第一类对象。特别是,我们可以使用变量引用它们,就像引用任何其他对象一样:

three := 3.
threePlus := [:s | three + s].

供以后使用

threePlus value: 4    "7"

块可以嵌套:

random := Random new.
compare := [:p :u | u <= p]
bernoulli60 := [compare value: 0.6 value: random next].

然后是顺序:

bernoulli60 value.  "true"
bernoulli60 value.  "false"
...
bernoulli60 value.  "true"

将回答true大约60%的时间。

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

可以创建一个独立的方法/函数(没有任何类) 的相关文章

  • MVC控制器(Controller)与策略模式(Strategy)

    MVC控制器 Controller 与策略模式 Strategy 转载时请注明出处和作者联系方式 http blog csdn net absurd 作者联系方式 Li XianJing
  • Smalltalk 中的运算符可以过载吗?

    Smalltalk 中是否可以重载运算符 我正在寻找教程 示例 Thanks Smalltalk 中不可能进行方法重载 相反 方法重写和称为的技术的组合双重调度用于实现与其他语言中的运算符重载相同的行为 您可以在数学运算符中找到示例实现 这
  • Pharo 中的彩色窗口主题?

    如何在 Pharo 中切换到彩色窗口主题 不确定你指的是哪个主题 但你尝试过吗 世界菜单 gt 系统 gt 设置 gt 外观 gt 形态 gt 用户界面主题 选择框将让您选择窗口颜色主题
  • 在 Centos 7.4x 上将 OSSubprocess 添加到我的 Pharo 6.1 时出现错误

    我想搞乱OSSubprocess 由马里亚诺 马丁内斯 佩克 来自 CentOS 7 4 上的 Pharo 6 1 我在 内搜索了Pharo Project Catalog并尝试安装它 我收到一个错误 ioLoadModule home s
  • Pharo Smalltalk:从 TextMorph 读取

    在使用 Pharo 的 Smalltalk 中 我正在创建一个读取用户输入并执行 X 操作的应用程序 到目前为止 我已经成功制作了一个 TextMorph 用户可以在其中输入值 但我不确定如何从 TextMorphs 中读取内容 然后对该值
  • 在正则表达式替换中捕获字符串

    根据我从 Pharo 正则表达式文档中收集到的信息 我可以定义一个正则表达式对象 例如 re foo re bar asRegex 我可以通过以下方式将匹配的正则表达式替换为字符串 re copy foobar blah rebar rep
  • 学习 Smalltalk 最好的免费 IDE 是什么? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 您认为学习 SmallTalk 的好 IDE 是什么 我只是将它用作业余爱好 所以它必须是免费的 你还应该考虑Pharo http pha
  • 如何在 Squeak FFI 中处理 typedef

    我想与一个库 HDF5 进行交互 该库在函数原型和结构定义中只使用自己的 typedef typedef struct H5L type t type Type of link hbool t corder valid Indicate i
  • 子类化流

    我有兴趣创建自己的 Stream 子类 并且想知道应该重写哪些方法 部署在 pharo 和 Gemstone 上 我有一个包含各种类型事物的集合 我希望能够流式传输它的子集 其中包含类的元素 我不想复制集合或使用collect 块 因为集合
  • Smalltalk中new和initialize的区别?

    新手问题 new和initialize有什么区别 确切地 当您发送消息 new时 它不仅创建对象 而且发送消息 initialize 这使您可以自定义对象的初始化 看 Behavior gt gt new Answer a new init
  • Squeak/Pharo Web 服务的微框架

    许多语言都有用于编写非常小的网站或 Web 服务的微框架 例如用于 Python 的 Flask 或用于 Ruby 的 Sinatra 在 Squeak 上 似乎没有任何类似的东西 伊利亚特 海边 和 AIDA 都非常重 只是提供了一点服务
  • gst 浏览器无法启动

    我刚刚安装了gst browser VisualGST 通过 Canonical Ubuntu 存储库 因此我尝试通过运行来启动 VisualGSTgst browser在命令行上 但是 我立即收到一个错误 a Smalltalk Stre
  • Pharo Smalltalk 和 mySql

    我正在寻找知道如何连接 Pharo Smalltalk 和 mySql 的人 我只想做一些基本的事情 比如 从名称中选择 然后将结果读入 Pharo 有人对这个有了解吗 如果你有一个屏幕视频那就太好了 我会给你买杯啤酒 查看DBXTalk
  • 如何更改 Smalltalk 中变形的位置?二维网格

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

    我目前正在 Squeak 环境中学习 Smalltalk 并且正在阅读 Squeak A Quick Trip To ObjectLand 我带着一些 Python 和 Java 的先验知识进入了面向对象范式 书中第 36 页的这句话让我想
  • GNU Smalltalk 80 调试器。如何调试smallcode代码?启动调试器?

    在 GNU Smalltalk 80 中 可以用您自己的普通代码编写 Smalltalk 代码 个人选择的文本编辑器 因此 调试代码非常重要 首先 将文件另存为 txt 文件 然后 您可以使用 工具 从程序员文本编辑器中打开该文件 这里的工
  • 如何在没有副本的情况下向后流式传输集合?

    我想知道如何向后流式传输集合无副本在法罗 吱吱声中 例如 要流式传输 1 2 3 so stream next回报3 then 2 then 1 我知道我可以使用collection reversed readStream but reve
  • Smalltalk:消息的发送者是什么?

    在smalltalk中 一切都是通过向接收者对象发送消息来发生的 其语法通常遵循以下格式接收者消息 其中接收者是消息发送到的对象 现在我忍不住想知道 smalltalk 消息的发送者是什么 考虑以下smalltalk 语句 aMorph c
  • 海边有规模吗?

    Seaside被称为 异端网络框架 使它成为异端的原因之一是它有很多共享状态 然而 根据我目前的理解 这阻碍了轻松扩展 另一方面 Ruby on Rails 共享尽可能少的状态 众所周知 它的扩展性非常好 即使它与现代的 Smalltalk
  • 如何自动将多个 Monticello 提交从本地存储库复制到 Smalltalkhub.com?

    白天 我将多个版本的 Monticello 软件包提交到 磁盘上的本地存储库 稍后我想将本地存储库与 Smalltalkhub com 存储库同步 目前 我使用 Monticello 浏览器将本地提交手动一一复制到 Smalltalkhub

随机推荐

  • 如何修复 Dynamo-db 中针对 null/空字符串的禁用验证?

    我正在尝试将数据从节点 JS 代码推送到 Dynamodb 我遇到这样的问题 DynamoDB DocumentClient 应支持空字符串属性 有谁知道如何在 DynamoDB 中禁用验证 通过添加此内容 我们将能够将空值插入 Dynam
  • 如何使用 Docker 和 DigitalOcean Spaces 部署 TensorFlow Serving

    如何配置 TensorFlow Serving 以使用存储在 DigitalOcean Spaces 中的文件 重要的是解决方案 提供对这两个配置的访问and模型文件 提供对数据的非公开访问 我已经配置了一个名为your bucket na
  • mysql转储到derby

    我正在使用 derby 在 eclipse 中进行开发 是否可以从 MySQL 转储表并以某种方式将其用于 derby 我知道 ddl 和 dml 对于两个 dbms 来说是不同的 但我正在寻找一种除了转储 导出之外的合适方法 我可以找到两
  • 简化 CSS 代码

    我怎样才能简化这段代码 user panel subscribe user panel faves user panel tags user panel title user panel calendar a user panel item
  • Cloud9 IDE 本地主题

    Cloud9 IDE 文档说您可以导入 Textmate 主题 但我不明白 有人可以逐步解释我如何做到这一点吗 顺便说一句 我正在尝试将主题包含在我的本地主机上 我找到了这个链接 但我还是不明白 https groups google co
  • 在 C# 中向下转换对象列表

    如何向下转换对象列表 以便列表中的每个对象都向下转换为派生类的对象 这就是场景 我有一个基类List基本项 以及从它继承的两个类 public class BaseClass public List
  • 如果不使用 Promise 对象的 then 方法,是否不可能从 Promise 对象获取 [[PromiseValue]] ? [复制]

    这个问题在这里已经有答案了 该问题旨在成为规范的问题 答案 看什么是规范问题 答案 其目的是什么 https meta stackoverflow com q 291992 这里没有明确的答案 我在此发布问题 以代替之前提出和回答的问题 如
  • TransactionFlow(TransactionFlowOption.Mandatory) 操作行为(TransactionScopeRequired = true

    我正在尝试了解 WCF 事务 但对一个概念感到困惑 行为上有什么不同 TransactionFlow TransactionFlowOption Mandatory and OperationBehavior TransactionScop
  • jquery 更改事件和 aurelia 的技术

    我需要找到一个可靠的解决方案来使这两个框架很好地发挥作用 使用materialize css 他们的选择元素使用jquery来应用值更改 然而 这并没有触发奥里莉亚看到变化 使用 的技术 select change eventObject
  • 在 Intellij-Idea 调试器中转储一个巨大的数组

    Idea 有没有办法将一个非常大的整数数组的内容转储到剪贴板中 数组上的 复制值 不返回任何内容 要使用复制值获取剪贴板中的值 您需要定义一个 Java 数据类型渲染器 来解释数组的内容 右键单击您的数组变量 选择 查看为 gt 创建 在
  • 强制 IDataErrorInfo 验证

    我在某个面板上有两个控件 文本框和组合框
  • 如何让R使用所有处理器?

    我有一台运行 Windows XP 的四核笔记本电脑 但查看任务管理器 R 似乎一次只使用一个处理器 如何让 R 使用全部四个处理器并加速我的 R 程序 我有一个基本系统 我使用它在 for 循环上并行化我的程序 一旦您了解需要做什么 此方
  • 从排列生成器中随机选择?

    如何随机挑选所有结果 一一 不重复 itertools permutations k 或者这个 如何构建随机排列生成器 就像是shuffle permutations k 我正在使用Python 2 6 Yeah shuffle r 可以使
  • SQL 中基于下一条记录和上一条记录的复杂排序

    这是一个后续问题根据 SQL 中的下一条记录和上一条记录进行排序 https stackoverflow com questions 30477803 sorting based on next and previous records i
  • 有什么方法可以让dispatch_queue_t在单线程中工作吗?

    这是我的代码 interface MyObject property nonatomic dispatch queue t queue end implementation MyObject NSThread check id init s
  • Jquery Flipbook 上传 PDF

    我正在使用Builtbywill Flipbook div div title This is a page title img src image1 jpg div div img src image2 jpg div div title
  • 将值替换为其各自列的名称

    我有一个数据框 Code 401k CVS 101A true 231N true FD54 true 99JB 85F4 true 我试图用相应的列名称 例如 401k 替换 true 字符值 这是我想要的输出 Code 401k CVS
  • 包管理器控制台中缺少文件错误

    我们的开发团队的一些成员在打开包管理器控制台时开始看到以下错误 它完全阻止我们运行实体框架命令 我们已经检查过并且提到的文件确实存在 GetEvent types ps1xml Diagnostics Format ps1xml Diagn
  • 设置一个带有 JQuery 掩码的文本字段

    使用 watir webdriver 我尝试设置文本字段的值 browser text field id phoneNumbers value input set 5555551234 当我运行该命令时 我可以看到 watir 找到了该字段
  • 可以创建一个独立的方法/函数(没有任何类)

    我正在尝试理解闲聊 是否可以有一个独立的方法 函数 它不属于任何特定类 并且可以稍后调用 amethod amethod called printNl amethod 上面的代码给出以下错误 simpleclass st 1 expecte