具有多參數的方法

如果要同時設定分子分母的方法名稱應該為
setNumerator : andDenominator :
只要在定義方法時在每一個參數後面加上『:』表示將接受冒號之後的參數。
用法如下:
[ myFraction setNumerator : 1 andDenominator : 3 ];
這樣的命名雖然不錯,但名稱太長,我們可以改短增加其可讀性:
[ myFraction setTo : 1 over : 3 ]; 
兩種方式都可以,可依個人喜好命名!
好的方法名稱對於程式的可讀性非常重要喔!



範例:


  • (介面檔宣告 setTo:over 方法)

於介面檔 Fraction.h 
  1. #import <Foundation/Foundation.h>

  2. @interface Fraction : NSObject
  3. @property int numerator, denominator;

  4. -(void) print;
  5. -(void) setTo: (int) n  over: (int) d;
  6. -(double)  convertToNum; 
  7. @end
  • (加入新增 setTo:over: 方法的定義於實作檔)
於實作檔 Fraction.m
  1. #import "Fraction.h"

  2. @implementation Fraction

  3. @synthesize numerator, denominator;

  4. -(void) print
  5. {
  6.     NSLog(@"%i/%i", numerator, denominator);
  7. }

  8. -(double) convertToNum
  9. {
  10.     if (denominator != 0)
  11.         return (double) numerator / denominator;
  12.     else
  13.         return NAN;

  14. }

  15. -(void) setTo:(int)n over:(int)d
  16. {
  17.     numerator = n;
  18.     denominator = d;     //指定 n 和 d 兩個整數參數給對應的實體變數
  19. }
  20. @end
  • (最後測試看看我的新方法)
於 main.m
  1. int main(int argc, const char * argv[])
  2. {

  3.     @autoreleasepool {
  4.         Fraction *aFraction = [Fraction new];
  5.         
  6.         [aFraction setTo:100 over:200];
  7.         [aFraction print];
  8.         
  9.         //set fraction to 1/3
  10.         [aFraction setTo:1 over:3];
  11.         [aFraction print];
  12.         
  13.     }
  14.     return 0;
  15. }

  • (輸出)
100/2001/3


留言

這個網誌中的熱門文章

[GoPro] 副檔名 LRV 和 THM 到底是什麼?

[Mac] 資料夾半透明無法開啟

[Git] Git rename from index.lock to index failed.