2

我该如何重写:

NSUInteger options = kCFCalendarUnitYear | kCFCalendarUnitMonth | kCFCalendarUnitDay;

Ruby for Rubymotion?

谢谢 :)

4

2 回答 2

2

几乎完全相同的方式。唯一的区别是,由于 Ruby 要求常量以大写字母开头,因此您必须使用大写字母K

options = KCFCalendarUnitYear | KCFCalendarUnitMonth | KCFCalendarUnitDay
# returns 28, same as in Objective-C.
于 2012-06-22T16:43:59.563 回答
2

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

例如:

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

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

options.inject(:|)

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

于 2013-07-22T04:09:50.220 回答