Как проверить, является ли var кортежем в Swift?

Чтение раздела «Приведение типов» в Быстрое руководство Я вижу, что использую ключевое слово is для ввода контрольных переменных.

func isString(test: AnyObject?) -> Bool {
    return test is String
}

Кажется, когда я пытаюсь что-то подобное проверить на наличие кортежа, содержащего три объекта NSNumber, я получаю сообщение «Кортеж не соответствует протоколу AnyObject». Есть ли способ проверить, содержит ли переменная кортеж?

func isTuple(test: AnyObject?) -> Bool {
    return test is (NSNumber, NSNumber, NSNumber) // error
}

person atreat    schedule 17.03.2015    source источник
comment
Ну, у вас нет возвращаемого типа для вашей функции, так что это было бы хорошим местом для начала.   -  person Ian    schedule 17.03.2015


Ответы (2)



Вы можете сделать это следующим образом:

func isTuple(test: Any?) -> Bool{

    return test is (NSNumber, NSNumber, NSNumber)
}
person Dharmesh Kheni    schedule 17.03.2015
comment
Это избыточно; нет необходимости в дополнительном операторе if, когда is возвращает Bool самостоятельно. - person AstroCB; 17.03.2015