在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
我们继续就《Objective-C 分离接口和实现文件》一文中的 Fraction 类说事。如果有一个方法能够只用一条消息即可设置 numerator 同时又可设置 denominator,那该有多好啊!没问题,通过列出每个连续的方法并用冒号将其连起来,就可以定义一个接受多个参数的方法。用冒号连接的参数将成为这个方法名的一部分。例如,方法名 addEntryWithName: andEmail: 表示接收两个参数的方法,这两个参数可能是姓名和电子邮件地址。方法 addEntryWithName: andEmail: andPhone: 是接收以下 3 个参数的方法,一个姓名,一个电子邮件地址和一个电话号码。
同时设置 numerator 和 denominator 的方法可以命名为 setNumerator: andDenominator: 你可以采取以下形式:
[myFraction setNumerator: 1 andDenominator: 3];
这种方法还不错。实际上,这是命名方法的首选方式。但是必须为方法指定更易阅读的名称。例如:一种更通用的做法,setTo: over: 它可读性会比前面来得更强。
[myFraction setTo: 1 over: 3];
接下来,让我们把这个新方法应用到 Fraction.h 中去:
01 #import <Foundation/Foundation.h>
02 03 // Define the Fraction class 04 05 @interface Fraction: NSObject 06 { 07 int numerator; 08 int denominator; 09 } 10 11 @property int numerator, denominator; 12 13 -(void) print; 14 -(void) setTo: (int) n over: (int) d; 15 -(double) convertToNum; 16 17 @end 然后,在实现文件中添加新方法定义:
01 #import "Fraction.h"
02 03 @implementation Fraction 04 05 @synthesize numerator, denominator; 06 07 -(void) print 08 { 09 NSLog (@"%i/%i", numerator, denominator); 10 } 11 12 -(double) convertToNum 13 { 14 if (denominator != 0) 15 return (double) numerator / denominator; 16 else 17 return 1.0; 18 } 19 20 -(void) setTo: (int) n over: (int) d 21 { 22 numerator = n; 23 denominator = d; 24 } 25 26 @end 最后,在 main.m 中应用它:
01 #import "Fraction.h"
02 03 int main (int argc, const char * argv[]) 04 { 05 NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; 06 Fraction *aFraction = [[Fraction alloc] init]; 07 08 [aFraction setTo: 100 over: 200]; 09 [aFraction print]; 10 11 [aFraction setTo: 1 over: 3]; 12 [aFraction print]; 13 [aFraction release]; 14 15 [pool drain]; 16 return 0; 17 } 范例 7-2 完成,最终输出结果如下:
100/200 1/3 |
请发表评论