问题标签 [smalltalk]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
446 浏览

smalltalk - 什么文件类型以 BOSS 7 开头?

我正在查看 90 年代初期生成的一些文件。其中一个似乎包含对以某种二进制格式打包在许多大文件中的数据的引用。

文件的前六个字节是 0x42 0x4f 0x53 0x53 0x20 0x37 拼写 BOSS 7。

我对各种文件类型信息来源的搜索,包括 /usr/share/file/magic 没有发现任何东西。有谁知道可能使用什么软件来生成以这些字节开头的文件?有关文件布局的任何信息都会很棒。

0 投票
2 回答
1726 浏览

smalltalk - perform 的性能开销:在 Smalltalk 中(特别是 Squeak)

平均而言,我可以合理地期望perform:比发送文字消息慢多少?我是否应该避免perform:在循环中发送,类似于对 Perl/Python 程序员的警告,以避免在循环中调用eval("...")Compiler evaluate:在 Smalltalk 中)?

我主要关心 Squeak,但也对其他 Smalltalks 感兴趣。此外,perform:with:变体的开销是否更大?谢谢

0 投票
1 回答
1574 浏览

smalltalk - 何时使用 Seaside 组件,何时使用简单的渲染对象?

我最近一直在 Seaside+Squeak 中开发一个 Web 应用程序,并发现它是一次美妙的体验。Seaside 确实比其他所有框架都遥遥无期,我觉得我好像在更高层次的抽象上工作(在其他框架让你处理的 HTTP 请求/响应周期和 HTML 模板之上)。

也就是说,我对 Seaside 组件有点困惑。我最近不得不在一个组件上显示一个对象列表(类似于 stackoverflow 的首页)。起初我将每个对象都设为一个组件(WAComponent 的子类),但事实证明这非常浪费,而且我必须在父组件中动态设置#children 才能使其正常工作。然后我尝试让它们呈现对象(不是 WAComponent 子类的对象,并使用 renderOn: 而不是 renderContentOn: 进行呈现,就像组件一样)。这行得通,但现在他们不能再像组件那样访问会话对象中的全局状态(使用#session)。然后我发现了“WACurrentSession 值”,它使任何对象都可以访问当前的 Seaside 会话对象。我现在能够让它们渲染对象。此外,

除了需要呼叫/应答或回溯状态之外,还有哪些其他原因需要使用组件而不是渲染对象?

0 投票
5 回答
570 浏览

ruby - Smalltalk 如何处理猴子补丁?

我是一名 Ruby 程序员。对我来说,monkeypatching 是在运行时更改外部项目中的类或模块方法。我感兴趣的是,您有什么机制可以保护您免受某些对该功能的滥用。接下来是我遇到的一些场景,monkeypatching 咬了我一口。

虽然我根本不了解 Smalltalk,但这种语言早在 Ruby 之前就已经存在了。我做了一些研究,看看 Smalltalk 是否以及如何解决其中的一些问题,但在 Google 上没有找到太多。所以我在这里,询问 Smalltalkers 是否可以分享他们的智慧。

场景 A:错误修复冲突

项目 A 和 B 依赖于项目 C。项目 C 有一个错误。项目 A 和 B 版本包含对项目 C 的修复。

如果你的代码使用项目 A 和 B,你怎么知道补丁不会冲突?

场景 B:过时的错误修复

项目 C 发布了他们项目的固定次要版本。

如果您加载项目 A,是否仍会应用补丁,但可能会损坏?我很想知道是否存在某种机制,例如,如果代码已修复,则不加载补丁。

场景 C:冲突的扩展

项目 A 和 B 使用项目 C 的类 Foo。两者都向 Foo 添加了一个实用方法,例如 #toDate。A 的 toDate 版本返回一个日期字符串,而 B 的一个返回 Date 对象。

如果您加载两个项目(使用 C dep),是否有一种机制可以警告/防止冲突?或者您是否必须等到运行时由于方法中的错误期望而引发错误?

关于问题更新

阅读答案,我意识到我的问题过于广泛和模糊。所以这里是它的重写版本。

0 投票
5 回答
2565 浏览

smalltalk - GNU Smalltalk 与 Squeak 的兼容性如何

我正在开发一个完全不需要图形的应用程序,它只是数据操作。问题是我在一个相当保守的环境中工作,我认为我无法向我的经理出售一个吱吱声的应用程序(我觉得明亮的颜色、圆形的界面和一般的“这到底是什么” “吱吱声会吓跑他们)。所以我正在考虑在 GNU Smalltalk 下运行该应用程序,因为更“传统”的命令行界面不太可能吓跑利益相关者。

那么,任何人都可以提供或指出我在 Squeak 和 Gnu Smalltalk 之间兼容或不兼容的功能/类的列表或集合。换句话说,将应用程序从一个应用程序移植到另一个应用程序有多难(再次假设它是非图形的,因此无需担心形态)?

谢谢!

0 投票
4 回答
3789 浏览

smalltalk - 吱吱声中的新行

我想做这样的事情:成绩单显示:'\ n'。如何?

0 投票
5 回答
1121 浏览

smalltalk - 如何在吱吱声中动态更改方法的名称?

我有一个类,我想在运行时更改特定方法的名称。我猜“行为”类中有一个方法可以做到这一点。但我就是找不到。有什么帮助吗?[吱吱声]

0 投票
5 回答
960 浏览

oop - Smalltalk 中的消息转发

所以我正在编写一个应用程序,其中一个对象有一堆将消息转发到的委托对象。这个想法是我可以说

并且 aMessage 将被发送给 someObject 的所有代表(对于 aMessage 的任何值)。我能够做到这一点的唯一方法是:

它有效,但必须有更好的方法。该解决方案将参数限制为字符串,并且非常难看。有谁知道转发消息的更清洁、更好的方法?

顺便说一句,我正在使用 squeak,但最好使用独立于实现的解决方案;)

编辑:我应该补充一点,代表与对象属于同一类,所以我不能只覆盖 DoesNotUnderstand:。

0 投票
4 回答
499 浏览

smalltalk - 在 Squeak 中,如何包装每个发送方法?

我创建了一个类,在那个类中我有一个方法'sendMessage: to: withArgs:',它接收一个对象、一个消息和一个参数数组。该方法用于向对象发送消息并执行一些算法。要使用此方法,我必须创建我创建的类的实例 x 并执行 x sendMessage: '+' to: '7' withArgs: '#(5)' 之类的操作。使用参数 5 向对象 7 发送消息“+”的结果,以及我的算法所做的一些事情。但我想要的是该算法将在每个方法调用中使用,这意味着 7+5 将调用我的'sendMessage: to: withArgs:'。我怎样才能做到这一点?或者至少,在发送给每个对象的每个方法中是否调用了某些东西?

0 投票
3 回答
2461 浏览

smalltalk - 如何在 Squeak 中创建全局变量?

我不是指类变量。我想要一个可以在任何地方使用的变量。我应该在哪里定义它?[吱吱声]