Как проверить, равны ли 3 строки в Swift?

Я это мой код, и он работает

if (v1 == v2) && (v2 == v3) { println("3 strings are equal") } 

Есть ли еще более быстрый способ сделать это?

Моя реализация похожа на C-код 🙂

Я так не думаю. Это так же просто, как и получается. (И улучшение на C и ObjC тоже – вы можете использовать оператор == вместо вызова strcmp или isEqual: )

Если вы действительно хотите сходить с ума, вы можете написать v1 == v2 == v3 если вы создали пару пользовательских перегрузок. (Это остается как упражнение для читателя.) Но это, вероятно, не стоит.

Вы могли бы сделать что-то классное:

 extension Array { func allEqual(isEqual: (T, T) -> Bool) -> Bool { if self.count < 2 { return true } for x in self { if !isEqual(x, self.first!) { return false } } return true } } 

И затем вызовите его вот так:

 ["X", "Y", "Z"].allEqual(==) // false ["X", "X", "X"].allEqual(==) // true let one = "1" var ONE = "1" var One = "1" [one, ONE, One].allEqual(==) // true 

Вы можете использовать расширение для строкового класса следующим образом:

 extension String { func allEquals (s1: String, s2: String) { (this == s1) && (s1 == s2) } } 

Я не скомпилировал его, но он должен работать;)

Если вы хотите быть очень осторожным, вы можете проверить, что массив строк будет таким же, как этот (вы можете обернуть это в расширение, конечно):

 var array = ["test", "test", "test"] var allEqual = array.reduce(true, combine: { (accum: Bool, s: String) -> Bool in accum && s == array[0] }) 

Я бы, наверное, не назвал его слишком элегантным или суперэффективным … но это, безусловно, работает.

  • Сбой приложения iOS при запуске через 1 неделю
  • Пользовательская ячейка неправильно рисуется при вставке строки с использованием метода insertRows (atPaths)
  • Отрегулировать вид для клавиатуры появляется при переключении UITextField (Swift)
  • Изменение изображения при выборе в ячейке tableview - Swift
  • Расширение NSURL для принятия StringLiteralConvertible
  • как показать UITableview в UIAlertcontroller в быстрой iOS?
  • Отключить вращение только для AVCaptureVideoPreviewLayer
  • В App Purchase - при попытке снова купить потребительский продукт - эта покупка в приложении уже куплена
  • Удаление одиночной обратной косой черты из строки
  • Ошибка создания UINavigationBar в пользовательском классе UINavigationController
  • Bluetooth, поврежденный в IOS 9.1 / Xcode 7.1.1
  • Давайте будем гением компьютера.