nev*_*ing 15 syntax smalltalk objective-c
我正在读一本关于Smalltalk的书(Charmond Liu的Smalltalk,Objects and Design).他讲述了如何使用HomeBudget
对象在Smalltalk中使用消息作为如何使用多个参数发送单个消息的示例:
HomeBudget spend: 229 on: 'VCR'
Run Code Online (Sandbox Code Playgroud)
Objective-C使用Smalltalk的许多想法,例如消息传递对象和冒号作为参数,但始终用方括号括起消息.同样的电话会是:
[homeBudget spend:229 on:@"VCR"];
Run Code Online (Sandbox Code Playgroud)
为什么Objective-C使用方括号(而不是像Smalltalk那样留下消息)?它是否需要语法,因为它是基于C的?这是一种风格选择吗?它能为您提供更多选择吗?还有其他原因吗?
nev*_*ing 12
我找到了对Brad Cox的采访,似乎暗示方括号用于语法:
DD:方括号是Objective-C语法的一个独特部分.方括号是怎么产生的,你这样做了吗?
BC:是的,那就是我.从字面上看,这是一个搜索没有采取的东西.采取了大括号.采用普通括号.它只是搜索不会与C使用的东西碰撞的大括号.
Tom Love也赞扬了Masterminds of Programming中的方括号,但他似乎在说这是一种风格选择:
我经常把自己称为负责Objective-C中方括号的人,因为Brad和我进行了长时间的谈话.我们是否有一个始终为C的C语法,或者我们是否创建了一种混合语言,我将其描述为"方括号是转换到对象域"?我们的观点是,如果你有一个混合语言,你可以构建一组基础类,以便在某些时候,大部分工作实际上是在方括号内完成的.这允许从典型的应用程序员中隐藏许多细节.
方括号表示在Objective-C中发送的消息.最初的想法是,一旦你构建了一组类库,那么你将花费大部分时间实际操作在方括号内,所以你真的在使用对象的底层框架进行面向对象的编程它是用混合语言开发的,它是程序语言和面向对象语言的结合.然后,当您开始构建功能库时,对于进入程序世界的要求越来越少,您可以保持在方括号内.设计一种基本上有两个级别的语言是一个刻意的决定 - 一旦你建立了足够的能力,你就可以在更高的层次上运作.我其实认为这是其中一个原因.如果我们选择了一个非常类似于C的语法,我不确定是否会有人知道该语言的名称,并且它不可能在任何地方使用.
Objective-C是"C"的严格超集,因此要求所有添加都不要改变"C"语言.所有"C"程序也都是有效的Objective-C程序.
C++ OTHO确实对"C"语言进行了更改,使得并非所有有效的"C"程序都将使用C++编译器进行编译,这也不是有效的C++程序.
因此,有必要找到未在"C"中使用的符号,或者至少不在冲突的上下文中使用的符号.因此在Objective-C中大量使用"@".在其他情况下,添加符号以消除"C"的歧义.