在我的构造函数中,我想创建一个随机颜色。
因此,我需要三个随机的7位浮点数,范围为0 ... 1,构成颜色的红色,绿色和蓝色分量。我把它放在一个块中,而不是写了相当长的random() % 128 / 128.0
三次:
CGFloat (^randFloat)() = ^(){ return random() % 128 / 128.0; };
color = CGColorCreateGenericRGB(randFloat(), randFloat(), randFloat(), .5);
这是否是使用积木的有效方式?
如果没有,你会用什么呢?
答案 0 :(得分:5)
您要返回randFloat
吗?请randFloat
使用任何与附近函数不可分离的状态(即randFloat
是否为闭包)?如果没有,它更具可移植性(例如iPhone官方SDK不支持块)并且在函数之外创建静态函数是高效的:
static CGFloat randFloat() {
return random() % 128 / 128.0;
}
...
color = CGColorCreateGenericRGB(randFloat(), randFloat(), randFloat(), .5);
答案 1 :(得分:1)
使用块的方式没有错误。在这种情况下我个人不会,因为为操作创建一个块实际上会使代码更长。但原则上似乎很好。如果这个函数从未在其他任何地方使用过,为什么要给它一个比它需要的更大的范围呢?