题
我想知道为什么下不起作用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
其中新的变量未定义所以它是零。
不隶属于 StackOverflow