Примечание - используя переменные аргументы, Phix предоставил супер решение ниже.Однако он выдает предупреждения компилятора при использовании с целыми числами, поскольку вы приводите их к идентификатору, и он не будет работать, например, с плавающей точкой.
Вопрос - как написать средство, которое выбирает один элемент из списка?В идеале это было бы максимально гибко в отношении типа предметов / объектов / чего угодно в списке.
Пример использования:
NSInteger openingMap = [utilities oneOf:1, 2, 3, 7, 8];
initialAngle =oneOf(1.25, 1.75, 1.95, 2.00, 2.01);
self.spaceShipNickName =oneOf(@"Blaster",@"Blitzen",@"Stardancer",@"Quantum");
self.chassisProperty = oneOf(titanium, neutronium, unavailablium);
[fireworksLayer paintStars:oneOf(blue,green,white) howMany:oneOf(20,25,50)];
[trump chooseDefaultSuite:oneOf(diamonds,hearts,clubs,spades)];
// normally have a few explosions, but, occasionally have a huge display...
explosionCount = oneOf( 2,2,2,3,4,1,28,3,3,3,70 );
Обратите внимание, что некоторыепримерами являются целые числа, некоторые перечисления, некоторые строки NSS и т. д. Итак, еще раз, было бы наиболее впечатляющим, если бы одно средство могло обрабатывать разные типы.(Вместо, возможно, связанной группы, например ... oneOfIntegers, oneOfStrings, oneOfObject и т. Д.)
Само собой разумеется, что для выбора случайного элемента просто используйте ...
= arcrandom ()% number-of-items
Вы можете использовать метод или класс Objective C, функцию ac или некоторую систему макросов, расширение категории до NSMutableArray или даже блоки - или что-то еще. Он должен быть максимально гибким для широкого использования в любом месте типичного проекта iOS или Mac ... какие-нибудь идеи?