Objective c 目标C——将数组文本传递给方法

Objective c 目标C——将数组文本传递给方法,objective-c,Objective C,这似乎有效(无论如何,编译器不会抱怨): 但我想让它更简洁,并做到这一点: [sequence setBaseADSR:{0,1.0/PULSE_SPEED, 0,1}]; 我该怎么做?在javascript中,我将括号中的内容称为“数组文字”。但不确定C语言是否有相同的概念或术语 第二种方法不起作用,因为编译器不知道数组元素是哪种类型。但是,这样或类似的方式应该可以: [sequence setBaseADSR:(float adsr[4] = {0,1.0/PULSE_SPEED, 0,1

这似乎有效(无论如何,编译器不会抱怨):

但我想让它更简洁,并做到这一点:

[sequence setBaseADSR:{0,1.0/PULSE_SPEED, 0,1}];

我该怎么做?在javascript中,我将括号中的内容称为“数组文字”。但不确定C语言是否有相同的概念或术语

第二种方法不起作用,因为编译器不知道数组元素是哪种类型。但是,这样或类似的方式应该可以:

[sequence setBaseADSR:(float adsr[4] = {0,1.0/PULSE_SPEED, 0,1})];

由于声明返回表达式中最左边的元素(但现在无法测试)

如果编译器支持C99复合文字语法,则有可能

[sequence setBaseADRS:(float [4]){0,1.0/PULSE_SPEED,0,1}];

的确但这和我们在循环中初始化计数器的方法是一样的,所以对于一次性的目的来说,这完全是不必要的。请参阅Cirno de Bergerac的答案。您可以发布一个链接到Cimo的答案吗?如果你能控制这个API,我强烈建议不要像那样传递原始数组。C数组杂乱无章。@Chuck你有什么建议吗?我最喜欢的功能之一。我经常为
CGPoint
CGRect
UIEdgeInsets
,等等:
(CGRect){{{x,y],{w,h}
[sequence setBaseADRS:(float [4]){0,1.0/PULSE_SPEED,0,1}];