如何将Objective C选项位掩码重写为Ruby for RubyMotion?

时间:2012-06-22 15:58:05

标签: objective-c rubymotion

如何重写:

NSUInteger options = kCFCalendarUnitYear | kCFCalendarUnitMonth | kCFCalendarUnitDay;

Ruby for Rubymotion?

谢谢:)

2 个答案:

答案 0 :(得分:2)

几乎完全相同的方式。唯一的区别是因为Ruby要求常量以大写字母开头,所以必须使用大写K代替:

options = KCFCalendarUnitYear | KCFCalendarUnitMonth | KCFCalendarUnitDay
# returns 28, same as in Objective-C.

答案 1 :(得分:2)

Dylan Markow的回答是正确的。有时您可能还想以编程方式从值数组中创建一个位掩码,而您无需直接使用按位或运算符。

例如:

options = []
options << KCFCalendarUnitYear
options << KCFCalendarUnitMonth
options << KCFCalendarUnitDay

这里一个不错的小技巧就是像这样使用注入:

options.inject(:|)

它具有看起来像猴子脸的额外优势。