2015-10-19 3 views
0

Я решаюсь на Swift и языки, которые отличаются синтаксисом, к которому я привык. Кривая обучения. Мне было интересно, может ли кто-нибудь помочь мне объяснить это.Быстрый начинающий нуждается в разработке синтаксиса - Передающие и возвращающие функции

Я понимаю следующее. Я понимаю, что метод возвращает несколько значений в кортеже.


func getGasPrices() -> (Double, Double, Double) { 
return (3.59, 3.69, 3.79) 
} 

Я не понимаю это, хотя. Is makeIncrementer возвращение Int? Возвращает ли возвращенный Int? Что передается в метод addOne и как? Если addOne возвращает только одно значение, то как makeIncrementer может вернуть два значения? Кроме того, как можно сделать шаг var (назначенный как метод makeIncrementer) для принятия значений, когда функция не работает? Я также не знаю, как это можно назвать, как мимоходом и возвращает функцию, когда не передается функции (не так вложенными?)


// Passing and returning functions 
func makeIncrementer() -> (Int -> Int) { 
    func addOne(number: Int) -> Int { 
     return 1 + number 
    } 
    return addOne 
} 
var increment = makeIncrementer() 
increment(7) 

Если этот вопрос был дан ответ уже, простите меня, я не мог найти его! Я новичок в C# и Java, поэтому этот синтаксис для меня совершенно незначителен.

Спасибо заранее!

ответ

2

makeIncrementer возвращает значение, которое является функцией. Так что возвращается функция, которая принимает один целочисленный параметр.

func addOne(number: Int) -> Int 

Эта функция принимает целое число и возвращает другое. Для представления Swift использует синтаксис (Int -> Int). Это отличается тем, что сразу возвращает целое число, вы также можете увидеть экземпляры функций, которые выполняют функции в качестве параметров. Это может выглядеть так:

func doSomething(completion:()->()) 
Смежные вопросы