Свифт: Понимание // МАРКА

137

Какова цель написания комментариев в Swift как:

// MARK: This is a comment

Когда вы также можете сделать:

// This is a comment

Что // MARKдостигается?

Маркус Леон
источник

Ответы:

251

// MARK:И // MARK: -синтаксис функций Swift идентично #pragma markи #pragma mark -синтаксис Objective-C.

Используя этот синтаксис (плюс // TODO:и // FIXME:), вы можете получить некоторую дополнительную информацию для отображения в панели быстрого перехода.

Рассмотрим эти несколько строк исходного кода:

// MARK: A mark comment lives here.

func isPrime(_ value: UInt) -> Bool { return true }

введите описание изображения здесь

И для справки, панель быстрого перехода вверху в Xcode:

введите описание изображения здесь

Он существует в основном для быстрой навигации по файлу.

Обратите внимание, что dash ( // MARK: -) вызывает красивую разделительную линию. Посмотрите на этот MARKкомментарий:

// MARK: - A mark comment lives here.

введите описание изображения здесь

Темно-серая разделительная линия чуть выше жирного шрифта в этом меню происходит от тире.

Кроме того, мы можем получить эту разделительную строку без комментариев, просто не имея текста после тире:

// MARK: -

введите описание изображения здесь

Как уже упоминалось, // TODO:и // FIXME:комментарии также появятся здесь.

// MARK: - Prime functions

func isPrime(_ value: UInt) -> Bool {
    // TODO: Actually implement the logic for this method
    return true
}

func nthPrime(_ value: UInt) -> Int {
    // FIXME: Returns incorrect values for some arguments
    return 2
}

введите описание изображения здесь

  • FIXME получают маленький значок с лейкопластырем, который помогает им выделиться.
  • Значок MARK выглядит как оглавление
  • Иконки TODO больше похожи на контрольный список

Нажатие на любую строку в панели быстрого перехода приведет вас непосредственно к этой строке в исходном коде.

nhgrif
источник
Эта функция специфична для Swift / Objective-C или XCode?
ma11hew28
Xcode, предположительно. Хотя я легко могу представить, что другие IDE потенциально будут демонстрировать подобное поведение.
nhgrif
Вы также можете поставить дефис после вашего текста, // MARK: /Delegate impl. -чтобы отметить конец раздела, или почему не оба:// MARK: - Attention! -
Андреас
7

MARK просто добавляет визуальную метку в панель переходов следующим образом:

бывший // MARK: Core Data Stack

введите описание изображения здесь

Стефан Салатик
источник
-5

Вы всегда можете использовать

// MARK: - Properties
var name: String

// MARK: - Methods
func display() {
}

init(name: String, rollNumber: Int) {

    // TODO: add configuration code
    self.name = name
}

// FIXME: bug XYZ
func fixBug() {

}
Адитья
источник