首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在幕后实现Smalltalk的whileTrue消息?

在Smalltalk中,whileTrue消息是一个非常常见的控制流结构,用于在满足某个条件时重复执行一段代码。要实现这个消息,你需要定义一个方法,该方法接收一个块作为参数,并在满足条件时重复执行该块。

以下是一个简单的示例,展示了如何在Smalltalk中实现whileTrue消息:

代码语言:smalltalk
复制
Object subclass: #MyClass
    instanceVariableNames: ''
    classVariableNames: ''
    poolDictionaries: ''
    category: 'MyCategory'

MyClass >> whileTrue: aBlock
    "Evaluate aBlock repeatedly as long as the receiver is true."
    [ self ] whileTrue: aBlock

在这个示例中,我们定义了一个名为MyClass的类,并为其添加了一个名为whileTrue:的方法。这个方法接收一个块作为参数,并使用Smalltalk的whileTrue:消息来重复执行该块,直到接收者(self)不再为真。

要使用这个方法,你可以创建一个MyClass的实例,并调用whileTrue:方法,传入一个块作为参数,如下所示:

代码语言:smalltalk
复制
myInstance := MyClass new.
myInstance whileTrue: [
    "Code to be executed as long as myInstance is true"
]

请注意,这个示例仅用于演示如何在Smalltalk中实现whileTrue消息。在实际应用中,你可能需要根据具体需求进行调整。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

何在MQ中实现支持任意延迟消息

那么,如果我们自己要去实现一个支持任意延迟消息队列,难点在哪里呢? 排序 消息存储 首先,支持任意延迟意味着消息是需要在服务端进行排序。...其次,目前MQ方案中都是基于WAL方式实现(RocketMQ、Kafka),日志文件会被过期删除,一般会保留最近一段时间数据。 支持任意级别的延迟,那么需要保存最近30天消息。...知己知彼 虽然决定自己做,但是依旧需要先了解开源实现,那么就只能看看RocketMQ开源版本中,支持18个Level是怎么实现,希望能从中得到一些灵感。 ?...TimeWheel TimeWheel大致原理如下: ? 箭头按照一定方向固定频率移动(手表指针),每一次跳动称为一个tick。ticksPerWheel表示一个定时轮上tick数。...每次tick为1秒,ticksPerWheel为60,那么这就和现实中秒针走动完全一致。 TimeWheel应用到延迟消息中 无论定时消息还是延迟消息,最终都是投递后延迟一段时间对用户可见。

6K50

Java学习路线图

熟悉Java常用数据结构,基本数组类型,以及泛型容器(java.util.*),尤其是java.util.List接口和java.util.ArrayList实现;以及java.util.Map接口和...如果对面向对象编程概念有点不习惯,学Smalltalk。(Ruby也行,但不如Smalltalk经典。Ruby文档是一大硬伤。)...其他语言(JVM) 学习另一门跑在JVM上语言或者实现Groovy、Scala、Clojure、JRuby、Jython、JavaScript……) 如果还舒服,学一学Java Scripting...动态装载 学学Java动态装载(class loading) 如果还舒服的话,学学OSGI以及它一种实现Felix或者Equinox) 如果仍然很舒服的话,学学写基于Eclipse平台程序。...但另一些语言,比如SmallTalk,更偏向纯粹面向对象设计,包括基本数据类型都是对象,if/while/for等也用对象和方法来实现

1.5K31

一文搞懂MQTT,如何在SpringBoot中使用MQTT实现消息订阅和发布

它在IoT中有着怎样作用?如何在项目中使用MQTT? 一、MQTT介绍 1.1 什么是MQTT?...MQTT协议是轻量、简单、开放和易于实现,这些特点使它适用范围非常广泛。在很多情况下,包括受限环境中,:机器与机器(M2M)通信和物联网(IoT)。...常见应用场景主要有以下几个方面: (1)消息推送: PC端推送公告,比如安卓推送服务,还有一些即时通信软件微信、易信等也是采用推送技术。...接下来演示如何在SpringBoot项目中整合MQTT实现消息订阅和发布。...如下图所示: 通过日志输出可以发现,消费者已经成功接收到生产者发送消息,说明我们成功实现在Spring Boot项目中整合MQTT实现消息发布和订阅功能。

10.4K53

20 Python 基础: 重点知识点--网络通信进阶知识讲解

切换这个协程CPU上下文把CPU运行权交个这个协程,直到这个协程出现执行不下去需要等等情况,或者它调用主动让出CPUAPI之类,触发下一次调度。 那么这个实现有没有问题?...协程一个简单实现 [image.png] [image.png] 其实,就是把函数保存起来,我需要时候就调用一下,这就是协程思想。...对于开发和测试,也可以使用任何符合WSGI多线程服务器。 将消息广播到所有连接客户端,或分配给“房间”子集。 基于事件架构使用装饰器实现,隐藏了协议细节。...Socket.IO是一种传输协议,可在客户端(通常是Web浏览器)和服务器之间实现基于事件双向事件通信。客户端和服务器组件原始实现是用JavaScript编写。...room - 消息收件人。这可以设置为客户端会话ID以解决该客户端房间或应用程序创建任何自定义房间。如果省略此参数,则将事件广播到所有连接客户端。

1.6K30

Runtime 中消息机制

为什么Objective-C里会有消息机制 这就是语言基因问题了Smalltalk,之前在一本叫《代码未来》了解到Smalltalk是一门比较古老语言,在 Smalltalk 中一切皆对象,一切调用都是发消息...Objective-C是在C基础上,借鉴 Smalltalk 面向对象与消息机制扩展出来语言,就像Golang语言天生自带并发基因。...但是到了底层具体实现,却是普通C语言函数实现。这个实现函数就是objc_msgSend,该函数定义如下: void objc_msgSend(id self, SEL cmd, ...)...,如果能找到这个跟选择子名称相同方法,就跳转到其实现代码,往下执行。...说过了OC函数调用实现,你会觉得消息转发要处理很多,尤其是在搜索上,幸运是objc_msgSend在搜索这块是有做缓存,每个OC类都有一块这样缓存,objc_msgSend会将匹配结果缓存在快速映射表

1K50

编程思想 之「语言导论」

Alan Kay(他是 Smalltalk 面向对象编程环境语言发明人之一,也是面向对象编程思想创始人之一,他还是笔记本电脑最早构想者和现代 Windows GUI 最初尝试者)曾总结了 Smalltalk...程序是对象集合,它们通过发生消息来告知彼此所要做事情; 简单点说,程序中包含不同对象,对象之间通过调用方法(发送消息)来达到所要实现具体行为。...某一特定类型所有对象都可以接收同样消息 Java 语言中多态,导出类可以接收任何发给基类消息。...在理想面向对象编程语言中,每个对象都有一个接口(并非绝对,例如我们单纯想定义一个对象来表示某种类型体系,我们就可以不在对象里面定义接口),我们通过发送消息(调用对象接口)来告知对象我们要实现什么行为或者动作...反言之,每个对象都提供服务,我们通过想要实现服务来确定给那个对象发送消息

1K190

常见客户端架构解析

一千个程序员眼中有一千种 MVC SmallTalk MVC ? MVC.gif Models Models 表示知识。 一个 Model 可以是单个对象,也可以是一些对象组合结构。...某个 Model 所有节点都应该处在同样问题等级,将面向问题节点(日历中预约)和实现细节(如图形)混在一起是不好。 Views: View 是它 Model (可见)表示。...它以问问题方式得到展示所需数据,发送合适消息来更新 Model。所有这些问题和消息都在 Model 术语中,因此 View 必须知道它所展示 Model 属性语义。...而 Gossman 认为在现代 GUI 系统中,C 大部分工作已经由系统帮你做了,所以 C 并没有被抛弃,而是隐藏到幕后了。...各个层最好都定义一个协议来确认各自职责,可以有一些默认实现

2K30

20 Python 基础: 重点知识点--网络通信进阶知识讲解

切换这个协程CPU上下文把CPU运行权交个这个协程,直到这个协程出现执行不下去需要等等情况,或者它调用主动让出CPUAPI之类,触发下一次调度。 那么这个实现有没有问题?...对于开发和测试,也可以使用任何符合WSGI多线程服务器。 将消息广播到所有连接客户端,或分配给“房间”子集。 基于事件架构使用装饰器实现,隐藏了协议细节。...Socket.IO是一种传输协议,可在客户端(通常是Web浏览器)和服务器之间实现基于事件双向事件通信。客户端和服务器组件原始实现是用JavaScript编写。...room - 消息收件人。这可以设置为客户端会话ID以解决该客户端房间或应用程序创建任何自定义房间。如果省略此参数,则将事件广播到所有连接客户端。...callback - 如果给定,将调用此函数以确认客户端已收到消息。将传递给函数参数是客户端提供参数。回调函数只能在寻址单个客户端时使用。

1.5K20

《Java编程思想》读书笔记(一)

第一章 对象入门 Alan Kay 总结了 Smalltalk 五大基本特征。这是第一种成功面向对象程序设计语言,也是Java 基础 语言。...为了向对象发出请求,需向那个对象“发送一条消息”。更具体地讲,可将消息想象为一个调用请求,它调用是从属于目标对象一个子例程或函数。 (3) 每个对象都有自己存储空间,可容纳其他对象。...有些人进行了进一步区分,他们强调“类型”决定了接口,而“类”是那个接口一种特殊实现方 式。...当我们进行面向对象程序设计时,面临最大一项挑战性就是:如何在“问题空间”(问题实际存在地方)元素与“方案空间”(对实际问题进行建模地方,计算机)元素之间建立理想“一对 一”对应或映射关系...对面向对象程序设计语言来说,它们用以实现多形性方法叫作“动态 绑定”。编译器和运行期系统会负责对所有细节控制;我们只需知道会发生什么事情,而且更重要是, 如何利用它帮助自己设计程序。

46640

02.RabbitMQ简介

并且在1997年Teknekron以TIBCO形式作为一家独立公司再度出现。同年,微软也在消息通信市场崭露头角:微软消息队列MSMQ诞生。...通过这一系列革新,消息队列(MQ)软件主要留住了大型组织机构,它们需要可靠性、解耦以及实时消息通信。为什么MQ不去寻找更大市场呢? 因为:供应商壁垒。...如果应用已经订阅了TIBCO MQ消息,若突然需要消费来自IBM MQ消息,则实现起来会非常困难。这些产品使用不同API、不同协议,因而毫无疑问无法联合起来组成单一总线。...Erlang语言创始人Joe Armstrong当年在爱立信做电话网络方面的开发,他使用Smalltalk,可惜那个时候Smalltalk太慢,不能满足电话网络高性能要求。...但Joe实在喜欢Smalltalk,于是定购了一台Tektronix Smalltalk机器。

1.1K20

新版阿里神级“高并发”教程《基础+实战+源码+面试+架构》

导致并发编程频繁出问题幕后黑手” 解密诡异并发问题第一个幕后黑手——可见性问题 解密导致并发问题第二个幕后黑手——原子性问题 解密导致并发问题第三个幕后黑手——有序性问题 如何解决可见性和有序性问题...synchronized原理 为何在32位多核CPU_上执行long型变量写操作会出现诡异Bug问题? 如何使用互斥锁解决多线程原子性问题?...大家都在使用Redisson实现分布式锁了! ! 为何高并发系统中都要使用消息队列? 高并发环境下如何优化Tomcat配置?看完我懂了!...线程生命周期其实没有我们想象那么简单! ! 二、实战案例篇 如何实现亿级流量下分布式限流?这些理论你必须掌握! ! 如何实现亿级流量下分布式限流?这些算法你必须掌握! !...亿级流量场景下如何实现分布式限流?看完我彻底懂了! ! 如何实现亿级流量下分布式限流? 三、源码分析篇 PS:程序员究竟要不要读源码?

73420

Objective-C笔记

它扩展了标准ANSI C编程语言, 将Smalltalk消息传递机制加入到ANSI C中。当前主要支持编译器有GCC和Clang(采用LLVM作为后端)。...关键概念 消息传递 Objective-C最大特色是承自Smalltalk消息传递模型(message passing), 此机制与今日C++式之主流风格差异甚大。...- (void)lock { // 实现lock方法 } - (void)unlock { // 实现unlock方法 } @end 动态类型 类似于Smalltalk,Objective-C...其中,SEL类型是Objective-C中消息类型。 类别(Category) Objective-C借用并扩展了Smalltalk实现"分类"概念,用以帮助达到分解代码目的。...当然,本文介绍Objective-C特性只是一小部分,但我们仍然可以先用起来, 等遇到具体语法或者API时候再查阅文档(spec、tutorialspoint等)即可。

90840

Java架构师学习路线图

顺便学习一下面向对象基本思想,即对象、消息、封装、继承、多态等,这些通用内容不是Java特有的。这时候应该已经涉及了Java垃圾回收。...熟悉Java常用数据结构,基本数组类型,以及泛型容器(java.util.*),尤其是java.util.List接口和java.util.ArrayList实现;以及java.util.Map接口和...读读四人帮写《设计模式》(这本书是用C++和Smalltalk语言为例子,但仍然适合Java)。...如果对面向对象编程概念有点不习惯,学Smalltalk。(Ruby也行,但不如Smalltalk经典。Ruby文档是一大硬伤。)...动态装载 学学Java动态装载(class loading) 如果还舒服的话,学学OSGI以及它一种实现Felix或者Equinox) 如果仍然很舒服的话,学学写基于Eclipse平台程序。

5.5K30

界面之下:还原真实MV*模式

Smalltalk-80 MVC 历史背景 早在上个世纪70年代,美国施乐公司(Xerox)工程师研发了Smalltalk编程语言,并且开始用它编写图形界面的应用程序。...但不会直接操作View,可以说它是对View无知。 View和Model同步消息是通过观察者模式进行,而同步操作是由View自己请求Model数据然后对视图进行更新。...经典Smalltalk-80 MVC不需要任何框架支持就可以实现。...Presenter获取到Model变更消息以后,通过View提供接口更新界面。 关键点: View不再负责同步逻辑,而是由Presenter负责。...可以通过Mock一个View对象,这个对象只需要实现了View接口即可。然后依赖注入到Presenter中,单元测试时候就可以完整测试Presenter应用逻辑正确性。

60020

MQTT-消息协议

1、简介 MQTT(消息队列遥测传输)是ISO 标准下基于发布/订阅范式消息协议。它工作在 TCP/IP协议族上,是为硬件性能低下远程设备以及网络状况糟糕情况下而设计发布/订阅型消息协议。...Mosquitto是一款实现消息推送协议 MQTT v3.1 开源消息代理软件,提供轻量级,支持可发布/可订阅消息推送模式,使设备对设备之间消息通信变得简单,比如现在应用广泛低功耗传感器...-m:选项来指定我们消息 ?...You should consider upgrading via the 'pip install --upgrade pip' command. 2.使用paho-mqtt实现接收者 import...# 连接到服务器(本机) client.connect(HOST_IP, HOST_PORT, 60) count =0 whileTrue: count +=1 # 待发送数据

1.9K20

Python 换行符以及如何在 Python 输出时不换行

在本文中,你将学习: 如何在 Python 中识别换行符 如何在字符串和打印语句中使用换行符 如何编写不会在字符串末尾添加换行符打印语句 我们开始吧!...打印语句中换行符 默认情况下,print 语句在字符串末尾“在幕后”添加新换行符。...如果仅打印一条语句,你将不会注意到这一点,因为将仅打印一行: 但是,如果你在 Python 脚本中一条接一条地使用多个打印语句: 将会输出单独几行,因为 \n 已被“幕后”添加到每行末尾:...\n 字符结尾,该字符在“幕后”工作。...发现本站有涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

13.6K10

使用WakeLock使Android应用程序保持后台唤醒

在使用一些产品列微信、QQ之类,如果有新消息来时,手机屏幕即使在锁屏状态下也会亮起并提示声音,这时用户就知道有新消息来临了。...针对前面的例子,收到新消息必定有网络请求,而网络请求是消耗CPU操作,那么如何在锁屏状态乃至系统进入休眠后,仍然保持系统网络状态以及通过程序唤醒手机呢?...之前我做过一个需求是要在后台跑一个Service执行轮询,但发现一段时间以后,轮询就中断了(我测试是二十分钟后请求停止),但重新解锁屏幕后,轮询请求又开始了,后来在Stackoverflow上找到WakeLock...获取到PowerManager实例pm后,再通过new WakeLock方法获取wakelock实例,其中第一个参数是指定要获取哪种类型锁,不同锁对系统CPU、屏幕和键盘有不同影响,第二个参数是自定义名称...各种锁类型对CPU 、屏幕、键盘影响: 属性 说明 PARTIAL_WAKE_LOCK 保持CPU 运转,屏幕和键盘灯有可能是关闭

2.1K40

编程语言出现都这么随意吗?

1960 年 Lisp 并没有来得及设计自己语法,就被麦卡锡学生实现了,因为没有语法,麦卡锡学生就以列表格式语法分析树(即,S(Symbolic)表达式)作为临时语法。...系统语言:C 贝尔实验室 UNIX 操作系统,最初版本使用汇编语言写成,并 1970 年,在 UNIX 上实现第一个高级语言叫做 B 语言 B 目的是:用于开发 UNIX 系统程序,以及新版本...纯面向对象语言:Smalltalk Smalltalk 语言诞生于 1980 年,是第一个完全支持面向对象编程语言。...Smalltalk 源于 SIMUAL 67,完善并定义了消息发送,和对象继承关系。在 Smalltalk 中,所有数据都是对象:消息发送者,消息接受者,消息消息结果…。对象类型是类。...它删除了面向对象概念中概念认为类也是一种对象;消息仍然作为最基本操作;把对象属性理解为获取或更改属性这两种方法,从而把属性概念简化为方法;取消了变量和赋值,替代它们是通过消息来读槽和写槽。

1.6K60

.NET周刊【6月第5期 2024-06-30】

.NET Standard 构建限流库,支持多种限流算法和策略,固定窗口、滑动窗口、漏桶和令牌桶。...[WPF]用HtmlTextBlock实现消息对话框内容高亮和跳转 https://www.cnblogs.com/czwy/p/18273976 本文介绍了如何在WPF中实现能够局部高亮文字并支持链接跳转消息对话框...通过HtmlTextBlock控件,支持有限HTML标签,可以展示高亮文字且实现链接跳转功能。通过修改消息对话框中内容区域替换为HtmlTextBlock,并绑定Html内容属性,实现了目标功能。...WPF/C#:如何实现拖拉元素 https://www.cnblogs.com/mingupupu/p/18270547 这篇文章介绍了如何在WPF Canvas中实现拖放功能。...文章还列举了安装必要NuGet包和两种插件注册方式,并提供了一些实战示例,GET和POST请求测试代码。

9910
领券