V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
V2EX  ›  chchwy  ›  全部回复第 9 页 / 共 12 页
回复总数  233
1  2  3  4  5  6  7  8  9  10 ... 12  
2013 年 11 月 27 日
回复了 barb 创建的主题 程序员 不要 if else 的编程
很多 Design Pattern 的手法就是把 if-else 換成多態。
2013 年 11 月 23 日
回复了 fanghui 创建的主题 Java java并发编程有什么好书?
2013 年 11 月 17 日
回复了 inee 创建的主题 Windows windows下你必定会用到的快捷键?
Alt+D
2013 年 10 月 9 日
回复了 Ricepig 创建的主题 程序员 稍微吐槽一下ObjC的函数调用
@Ricepig
如果你想想Objc的出生時間是1983年,比Java、Ruby、Python等等語言都大了五歲到十歲,
你就不會意外它的語法設計如此了。Objc的老語法也是到了近兩年(2011年左右),Apple開始投入Clang項目之後,才慢慢有一些改良與演進。

Objc的亮點是在Objc Runtime,比方說可以透過
[myObject responseToselector:@selector(myMethod:)];
來判別對象是否能回應消息,這可是動態語言才有的特性阿,C/C++是連想都不敢想的。

Objc有動態語言的特性,強型別,同時完全兼容C語言,其實想想也明白它是一個妥協之下的產物。
2013 年 10 月 8 日
回复了 Ricepig 创建的主题 程序员 稍微吐槽一下ObjC的函数调用
可惜上次GNUStep的募資沒有成功,錯失了一次把Objective-C推出Win/Linux的機會。
2013 年 10 月 8 日
回复了 Ricepig 创建的主题 程序员 稍微吐槽一下ObjC的函数调用
> 或者函数设计者写成了copyItem:atPath:error ,还能理解吗?

大哥,你這句就是純找碴了,這不就是命名習慣不佳嗎? 干語言設計何事?
2013 年 10 月 8 日
回复了 Ricepig 创建的主题 程序员 稍微吐槽一下ObjC的函数调用
原來如此,那這個就是語法設計議題了。
要不要把名字和參數名切開只能說是當初語言設計者的喜好問題了。

我可以說說objc的背景

這種參數可以穿插在名字中間的寫法是從Smalltalk來的,Objc精神上是繼承自Smalltalk,Smalltalk 並非 C-like的語言。

只是迫於現實的緣故,Objc設計之初需要相容於C語言。所以用C的語法來思考,可能不夠妥當。

看看Wiki的Smalltalk條目,看看他的語法,或許你比較可以理解
https://en.wikipedia.org/wiki/Smalltalk
2013 年 10 月 8 日
回复了 Ricepig 创建的主题 程序员 稍微吐槽一下ObjC的函数调用
牽扯到清晰就跑題了,大哥。

我只是說明這樣的函數名並沒有任何的邏輯衝突之處。清晰與否則是個人主觀。

你喜歡用括號就用括號表達參數名,你當然可以認為這樣比較好,只可惜Objc並沒有參數名,也沒有用括號。

Objc的前身Smalltalk也不是用括號。
2013 年 10 月 8 日
回复了 Ricepig 创建的主题 程序员 稍微吐槽一下ObjC的函数调用
我可以舉個例子說明

比方說複製檔案的函數是
NSFileManager copyItemAtPath:toPath:error:

具體用法是
[myFileManager copyItemAtPath:@"FileA" toPath:@"FileB" error:nil];

你能說消息名是copyItemAtPath:
第一個參數名字叫Path 第二個叫toPath嗎?

當然不是的。

copyItemAtPath:toPath:error: <=這整個都是消息的名字,只是消息名稱中間可以填洞。

整句代碼就像是英文句子一樣,後半段你可以為了清晰而寫明參數名,但是不寫也是可以的。

像是有的數值運算庫 就用 [Fraction set:1 over:2] 來表達1/2的概念。
2013 年 10 月 8 日
回复了 Ricepig 创建的主题 程序员 稍微吐槽一下ObjC的函数调用
我懂你的意思了。

其實還是一句老話,整句都是函數名字。
不要理解為前半段是函數名字,後半段是參數名字,不是這樣的。

colorWithRed:green:blue:alpha: <= 這整個都是函數名字。

只是這個函數名字中間有挖些洞,可以填入參數值。
2013 年 10 月 8 日
回复了 Ricepig 创建的主题 程序员 稍微吐槽一下ObjC的函数调用
@Ricepic
不太明白你說的「第一个参数隐含了名字,造成第一个参数非常特殊」是什麼意思。

這四個參數有什麼不一樣嗎? ...可否麻煩您說的清楚些?
2013 年 10 月 8 日
回复了 Ricepig 创建的主题 程序员 稍微吐槽一下ObjC的函数调用
函數的簽名是
UIColor colorWithRed:green:blue:alpha:


別誤解為python那種named parameter了,red green blue alpha不能互換順序,也不能省略的,整串都是函數的名字。
2013 年 9 月 30 日
回复了 KickTR 创建的主题 程序员 [C++]指针被莫名其妙修改了……
http://www.v2ex.com/t/74249 [V2EX技巧] 贴图和贴代码的方法
2013 年 9 月 18 日
回复了 bengtuo 创建的主题 程序员 有没有技术能根据摄像头扫描出物体的3d 模型?
Kinect Fusion
2013 年 9 月 16 日
回复了 frogs 创建的主题 程序员 各位对objc的语法怎么看?
有Xocde的自動補全下,我只能說Objective-C的語法超棒,語句即文檔。
首先你要明白一件事,最近兩三年Objective-C的語言演進很快,extension是舊時代留下來的產物。

Xcode 4.2/LLVM 3.0 之後Objc語言引進了非常多新特性,語法也有相當變化。

詳細可查看這張表:
https://developer.apple.com/library/ios/releasenotes/ObjectiveC/ObjCAvailabilityIndex/

Xcode 4.2 是 2011年10月發佈的,我猜你的書的出版日期可能在這之前。

1. 以前只把方法和變量從.h移走,是沒辦法通過編譯的,私有方法一定要放在extension裡。
2. 現在私有變量、私有方法都直接寫在@implementation block裡就好了,但是這都是在Xcode 4.2之後才有的功能,以前不能這樣寫的。
3. 現在extension已經成了雞肋般的存在。唯一的用途就是有個類似.h的方法列表,閱讀上比較容易。
2013 年 8 月 26 日
回复了 tonyzzp 创建的主题 程序员 搞过两年JAVA,想学c++,求指教
重點不是語言,是應用。否則學了也只是學個語法。您想用C++來做什麼?
2013 年 8 月 15 日
回复了 levey 创建的主题 Vim [无聊贴]喜欢用 :wq 还是 :x
:x
大部分編輯器都支持tab鍵轉成四個空格呀
Java現在大多應用在Web上啦,幾乎沒人用它來寫桌面應用。

桌面應用現在主流是C#/.NET,比C++好寫一百倍啊。
需要跨平台的話現在當紅的方案是C++/Qt。
1  2  3  4  5  6  7  8  9  10 ... 12  
About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   4490 Online   Highest 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 24ms · UTC 10:05 · PVG 18:05 · LAX 03:05 · JFK 06:05
♥ Do have faith in what you're doing.