От новичка до гуру: Курсы программирования на CyberDuff

Swift: Почему функция, возвращаемая из другой функции, не может иметь значения по умолчанию?

Допустим, у нас есть функция со значениями параметров по умолчанию:

// function with default parameter values
func a(m:Int = 0, n:Int = 1) {
  print(m, n)
}

a()         // 0 1
a(m:2)      // 2 1
a(n:3)      // 0 3
a(m:4, n:5) // 4 5

Теперь я хочу вернуть точно такую ​​же функцию из другой функции:

func b() -> (Int,Int)->Void {
  func a(m:Int = 0, n:Int = 1) {
    print(m, n)
  }
  return a    // function returned
}

let a2 = b()

a2(m:4, n:5)  // ⛔ error: extraneous argument labels 'm:n:'
a2(4)         // ⛔ error: missing argument for parameter #2  
a2(4,5)       // OK

Теперь я не могу использовать метки аргументов и не могу использовать значения по умолчанию для параметров, почему?

Кажется, что функция a2() совершенно не похожа на функцию a(), что происходит за кулисами?

06.02.2019

  • Замыкания не могут иметь значения по умолчанию (и имена внешних параметров). Я вполне уверен, что об этом уже спрашивали и отвечали раньше. Еще ищете ... 06.02.2019
  • stackoverflow.com/questions/39613272/ 06.02.2019
  • stackoverflow.com/q/45258621/1187415: «Только функции могут иметь параметры по умолчанию» 06.02.2019

Новые материалы

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

Алиса в стране машинного обучения — инициатива «100 дней кода машинного обучения»
Covnets, регрессия, классификация, ReLU, предвзятость… — все это интригующие жаргоны, которые я слышал от своих сверстников, выбравших курс машинного обучения, по касательной во время обычного..

Иногда учитель, всегда ученик
Учение Йоды в применении к развитию разработчиков «Делай или не делай. Нет никакой попытки.” Обучение программированию превратилось в современное «создание группы» или «написание книги»...

Как создать файл конфигурации сборки в Xcode | Серия настроек проекта Xcode
Эта статья шаг за шагом расскажет вам, как создать новый файл конфигурации сборки в вашем проекте Xcode. Что такое файл конфигурации сборки? Файл конфигурации сборки — это обычный..

Venv против Virtualenv в Python  — что использовать?
Когда дело доходит до создания виртуальных сред в Python, есть два популярных варианта: venv и virtualenv. Оба инструмента служат одной цели — созданию изолированных сред для ваших проектов..

Реализация персептрона на Python (для абсолютных новичков)
Введение За последние пару десятилетий было довольно много шумихи вокруг искусственного интеллекта и его приложений. В этой статье мы обсудим, что такое искусственный интеллект и его основное..

С помощью javascript мы можем сделать это в одну строку.
С помощью javascript мы можем сделать это в одну строку. let x = 5; let y = 7; y = [x, x = y][0]; Но то, что мы можем , не обязательно означает, что мы должны это делать.