Что такое оператор в программировании?

Ответ

Оператор — это специальный символ или ключевое слово, которое выполняет операцию над одним или несколькими операндами (значениями, переменными, константами, выражениями).

Классификация операторов в Swift (и большинстве языков):

  1. Унарные — работают с одним операндом (стоят до или после).

    • Логическое НЕ: !isActive
    • Унарный минус: -number
    • Инкремент/декремент (в Swift нет ++, --, но есть +=1).
  2. Бинарные — работают с двумя операндами (самые распространенные).

    • Арифметические: +, -, *, /, % (остаток).
      let area = width * height
    • Операторы присваивания: =, +=, -=, *=, /=.
      counter += 1 // Эквивалентно counter = counter + 1
    • Операторы сравнения: ==, !=, >, <, >=, <=.
      let isEqual = (a == b)
    • Логические: && (И), || (ИЛИ).
      if isReady && !isError { ... }
  3. Тернарный условный оператор — работает с тремя операндами.

    let status = score >= 60 ? "Passed" : "Failed"
    // Если условие (score >= 60) истинно, вернет "Passed", иначе — "Failed".
  4. Специальные операторы Swift:

    • Оператор объединения по nil (Nil-Coalescing): ??
      let username = inputName ?? "Guest" // Если inputName nil, использует "Guest"
    • Операторы диапазона: ... (замкнутый), ..< (полуоткрытый).
      for i in 1...5 { } // Включает 5
      for i in 1..<5 { } // Не включает 5

Важно: В Swift многие операторы можно перегружать (определять свою логику для пользовательских типов) и даже создавать новые кастомные операторы.

Ответ 18+ 🔞

Давай разберём эту всю хуйню про операторы, чтобы у тебя в голове не было каши, как в борще после пьянки.

Представь, что оператор — это такой маленький работяга-гномик на стройке твоего кода. У него есть чёткая задача: взять один, два, а то и три кирпичика (это операнды) и что-то с ними сделать — склеить, сравнить, переложить. И у каждого гномика своё имя и своя специализация.

Первая бригада — одиночки (Унарные). Эти ребята работают в гордом одиночестве, но зато с размахом. Подходят к одному кирпичу и либо меняют его суть на противоположную, либо ставят на него свой штамп.

  • !isReady — Гномик «Восклицательный» подходит к флажку isReady и орет: «Да не готов ты, блядь!» — превращает true в false.
  • -temperature — Гномик «Минус» говорит: «Холодно, сука!» — и делает число отрицательным.

Вторая бригада — парные (Бинарные). Самые распространённые работяги. Берут два кирпича и вытворяют магию.

  • *Арифметики (+, -, `,/,%):** Тут всё просто, как два пальца об асфальт. Складывают, вычитают, умножают. Особняком стоит%— гномик «Остаток». Он смотрит, сколько не поделится ровненько, и выплевывает этот несчастный остаток.11 % 3` даст 2, потому что 11 на 3 делится три раза (9), и 2 лишних остаётся. Пиздец как просто.
    let площадьКомнаты = ширина * высота // Гномик «Умножить» сделал своё чёрное дело.
  • Надсмотрщики (=, +=, -=): Эти не производят, а приказывают. Гномик = — самый главный деспот. Берёт значение справа и впендюривает его в переменную слева. А его братва (+=, -=) — хитрые ублюдки. counter += 1 — это они сначала складывают counter и 1, а потом результат запихивают обратно в counter. Ленивые, блядь, в одну строку упаковали.
  • Следователи (==, !=, >, <): Их работа — сравнивать и доносить. Два кирпича на вход — true или false на выход. a == b — гномик «Равно» придирчиво сравнивает и докладывает: «Одинаковые, ёпта!» или «Не, разные, нахуй!».
  • Логики (&&, ||): Принимают только булевы значения (true/false) и выносят вердикт. && (И) — блюститель порядка: «Всё должно быть true, иначе нихуя!». || (ИЛИ) — более демократичный: «Хотя бы один true — и ладно, проходи».

Третий тип — трёхголовый змей (Тернарный). Единственный такой, ебать его в сраку. Работает по схеме «Вопрос → Ответ1 : Ответ2».

let статус = баллы >= 60 ? "Сдал" : "Отчислен"

Читается так: «Баллы больше или равно 60? Если да — «Сдал», если нет — «Отчислен». Весь смысл в том, чтобы в одну строчку впихнуть маленькое if-else. Удобно, но если переборщить, код читается, как шифровка из ада.

А теперь спецназ от Swift — местные крутые пацаны.

  • ?? (Оператор объединения по nil): Спасатель. Смотрит на значение слева. Если там не nil — берёт его. Если nil — плюёт на это дело и берёт значение справа по умолчанию.
    let имяПользователя = введённоеИмя ?? "Гость"
    // Перевод: «ВведённоеИмя» есть? Нет? Ну и хуй с ним, пусть будет «Гость».
  • ... и ..< (Операторы диапазона): Гномики-строители заборчиков. Говорят, откуда и докуда идти.
    for i in 1...5 { } // Беги от 1 ДО 5, ВКЛЮЧАЯ эту самую пятёрку. Забор с двумя столбами.
    for i in 1..<5 { } // Беги от 1 ДО 5, НЕ ВКЛЮЧАЯ её. Столб в конце — хуй с горы, не наш.

И самое охуительное — в Swift этих гномиков можно не только нанимать (перегружать), давая им новые инструкции для твоих типов, но и создавать своих, с блэкджеком и шлюхами! Представь, ты пишешь a ♥ b, и он делает что-то на твой выбор. Пиздец, да?

Короче, операторы — это просто инструменты. Главное — не пытаться забивать гвозди оператором деления, а то получишь Infinity и боль.