objective-c的語法—函數名

   對初學者來說,objective-c存在了很多令人費解的寫法,實際上他們是非常優雅的。

    程序員寫的最多的就是函數以及調用自己寫的或者別人寫的函數。本文就從函數的角度來看下objective-c的優雅之處。
    C#和objective-c同屬於c系列語言。讓我們先看下C#的函數定義和調用,做個對比。
    C#函數的定義:

public void doIt(string actorName, string movieName, int timesSeen)
{
Console.Write(
"{0} is my favorite actor in the movie {1}, I saw it {2} times.", actorName, movieName, timesSeen);
}

    函數的調用:   

Class1 objMovie = new Class1();
objMovie.doIt(
"萊昂納多·迪卡普里奧""盜夢空間"120);

 在讓.net程序員看下objective-c的定義:

- (void) doIt:(NSString *) actorName movieName: (NSString*) value timesSeen: (int)times { 
NSLog(
@"%@ is my favorite actor in the movie %@, I saw it %i times.",actorName, value, times); 
}

    如果你第一次看objective-c,肯定會琢磨不透上面的代碼,懷疑是不是寫錯了。  

    對於上面這個函數的定義:
1、'-'表示這個函數是實例函數(類似非靜態函數),'+'表示這個函數是類函數(類似靜態函數)
2、(void)表示這個函數沒有返回值。
3、函數名是'doIt: movieName: timesSeen:',而不是'doIt'
4、參數用空格隔開
5、參數類型寫在括號中
6、參數分內部參數和外部參數,如電影名稱,內部參數是:value,外部參數是:movieName

7、函數的一個參數沒有外部參數的名稱,有內部參數名。如:actorName。

調用:

     從上面代碼可以看出除了第一個參數,其餘的參數都可以加上外部參數名稱用於區別。

    從上面可以看出objective-c和C#區別很大,實在會令.net程序員費解。objective-c函數設計的優雅之處在於即有內部參數名又有外部參數名,可以不用在再內部定義變量來存放函數的參數。

總結:本文是對objective-c函數學習的一個簡單總結。

作者:朱祁林 出處:http://zhuqil.cnblogs.com 本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章