Отсутствует объявление с аргументом по умолчанию - PullRequest
0 голосов
/ 11 октября 2018

Это неправильный код или это известная проблема?

final class Foo {
    //@inlinable @inline(_always)
    static func bar(_ first: String = "default", _ second: Int) {
        print(first,second)
    }
}

Foo.bar(2)

В результате: Screenshot

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

Я бы не сказал, что это ошибка, скорее всего, это особенность.Этот код пахнет очень плохим стилем кода ...

  • Вы не указываете имена параметров, которые могут привести к очень плохим вещам, и присваиваете Int String ... Я бы не сталНе удивляйтесь

Теперь я не хочу "обучать" вас, как писать хороший код, но приведенный выше пример на самом деле не так.Просто не очень интуитивно понятно писать функции без меток, это прекрасный пример, почему мы должны использовать метки ... Написание функций, предложенных сообществом Swift, работает просто потрясающе ...

    final class Foo {
    //@inlinable @inline(_always)
    static func bar(first: String = "default", second: Int) {
        print(first,second)
    }
}

Foo.bar(second: 2)

Почему бы не простопропустить подчеркивания?:)

0 голосов
/ 11 октября 2018

Я не нахожу это удивительным, как некоторые из комментариев.Аргументы всегда должны быть приведены по порядку.При полном отсутствии меток единственный действительный способ сделать это - предоставить первый аргумент или оба.Таким образом, предоставление одного аргумента означает, что вам нужно указать строку.Значение по умолчанию ничего не меняет.

Сообщение об ошибке, как обычно, бесполезно, и другие языки могут вести себя по-разному, но это не является ошибкой.Если есть на что жаловаться, это то, что компилятор должен был предупредить об исходном объявлении метода, поскольку значением по умолчанию для первого параметра является otiose.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...