![]() | 1 aligo 2011-03-27 18:08:32 +08:00 很多函数式风格的语言实际上都会这样的,例如lisp 其实而且我最近也在应用这种方式作为IR风格 不过这obj-c部分没有实现那个语法糖实在有点让人难以理解了 |
![]() | 3 virushuo 2011-03-27 18:40:46 +08:00 习惯了就好,何况xcode可以自动完成。如果要连续调用函数也需要有()存在的。 |
![]() | 4 raptium 2011-03-27 18:56:12 +08:00 好像 xcode 打 ] 的时候会自动补 [ 的吧 |
![]() | 5 aligo 2011-03-27 19:07:37 +08:00 @keakon lisp是基于list(也可以看作对象)的折叠,由内到外调用方法的,调用的方法是写在左括号旁边的 而obj-c正好把这些反过来了,但他们堆积很多括号的思想基础是一样XD |
![]() | 7 ssword 2011-03-29 08:58:05 +08:00 继承自smalltalk,方法调用不叫方法调用,而是传递消息。 |
![]() | 8 ssword 2011-03-29 09:23:49 +08:00 @aligo lisp的函数调用方式与List无关,不过函数调用可以表示为List。调用的顺序不一定是“从外到内”,而在于正则序还是应用序。 在函数式语言中,调用也不叫调用,叫Apply,参数是靠空格分隔。括号倒不一定多重要,到haskell里就省略了。 不过这跟OO系的语言没有关系。 |
![]() | 9 lldong 2011-03-29 09:26:08 +08:00 由于objective-c是c的超集,又继承了smalltalk风格的消息机制.smalltalk里本身发消息给对象不需要加方括号,但objective-c的编译器需要对它进行标记并做特殊处理,转译为调用运行时API中的objc_msgSend(). |
![]() | 10 aligo 2011-03-29 19:51:01 +08:00 @ssword obj-c所要实现的是在编译时不去检查是否有方法存在,而改为传递消息,这点和lisp不谋而合,也就是obj-c的消息 另外obj-c不去实现调用的语法糖可能是因为会存在编译时就需要去检验方法存在的问题,以免需要检查是否和getter和setter有冲突,特别是链式调用的话,为了避免冲突必须去检查 |
![]() | 11 Livid MOD PRO 打 [ ] 的时候不需要按 SHIFT,从这一点来说,比 ( 和 { 都更容易输入。 |
![]() | 12 xionghengheng 2016-12-21 15:21:47 +08:00 like a shit |