我想知道为什么下不起作用GNU一般:

Object subclass: Foo [ ] new printNl

我期待打印输出的东西像"Foo",而是印花税"无".不这似乎有点奇怪吗?

有帮助吗?

解决方案

Object subclass: Foo [] 不是"通常"一般法,这是一个最近的外旨在使它实际代码文件。在此之前没有专门的法宣布类,因为他们将创建一个命令的图像。解释这些代码如你预期将是错误的几个原因:

  • 第一,如果 subclass: 是一个真正的讯息发送到 Object, 然后 Foo 应该解决的东西,这是不可能的,因为它只是宣布。但是,幕后,编译器类似的东西 Object subclass: #Foo 哪里 #Foo 是一个符号的名字一种新的类被创建。这将有可能编写的所有代码那样,除了然后你可以不使用类名称直接(因为它们不存在当代码读)。你必须做的 (Smalltalk at: #Foo) new printNl 所有的地方。所以整个形式 Object subclass: Foo [ ] 纯粹是语法的,只是宣布,这类应该建立和并不意味着在这个时刻,一个消息应该送到 Object, 等等

  • 第二,你不想创建类中间的一个算法和它们发送消息,即,这将是很丑陋作为一个发展实践。注意,课程必须注册系统,以便浏览器就可以显示它们编译器可以自动重新编译依赖关系,认为该版本控制可以记录他们,等等。还有,如果你的代码不小心运行这两次?你应该得到第二类Foo和忘记之前的一个吗?因此,通常,只编译器,浏览器和其他元的方案拟订工具创造新的课程,而且,只有在程序员的请求。

其他提示

此被解释为两个语句。第一个是

对象的子类:富[]

和第二个是

新printNl

其中新的变量未定义所以它是零。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top