давайте начнем с первой точки
func chooseStepFunction(backward: Bool) -> (Int) -> Int
Просматривая это объявление функции, вы можете сказать, что chooseStepFunction
является функция, которая принимает один аргумент типа Bool
и возвращает функцию типа (Int)-> Int
, которая принимает один аргумент Int в качестве параметра и возвращает Int
. поэтому здесь chooseStepFunction
возвращает функцию типа (Int)->Int
на основе переданного в backward
параметра.
stepBackward
или stepForward
, поэтому мы не используем скобки (). с точки зрения первого вы должны понимать, что chooseStepFunction
будет возвращать функцию, и эта функция имеет тип (Int)->Int
, и внимательно посмотрите, вы обнаружите, что сигнатура stepBackward and stepForward
имеет значение (Int)->Int
и будет возвращена как chooseStepFunction
return backward ? stepBackward : stepForward
3.
let moveNearerToZero = chooseStepFunction(backward: currentValue > 0)
здесь chooseStepFunction
возвращают функцию типа (Int)->Int
, которая хранится в moveNearerToZero
, поэтому это не простая переменная, это функция, поэтому мы можем использовать скобки.
Использование типов функций Вы используете типы функций, как и любые другие типы в Swift. Например, вы можете определить константу или переменную для типа функции и назначить соответствующую функцию для этой переменной:
var mathFunction: (Int, Int) -> Int = addTwoInts
Это можно прочитать как:
«Определить переменную называется mathFunction, которая имеет тип «функция, которая принимает два значения Int и возвращает значение Int.» Установите эту новую переменную для ссылки на функцию с именем addTwoInts. »
Функция addTwoInts(_:_:)
имеет того же типа, что и переменная mathFunction, и поэтому это присваивание разрешено средством проверки типов Swift.
Теперь вы можете вызывать назначенную функцию с именем mathFunction:
print("Result: \(mathFunction(2, 3))")
Надеюсь, это поможет. [+1139]
IsolatedStorage имеет пару интересных функций, которые могли бы заставить Вас выбрать его:
Даже очень низко доверяемые приложения (такие как щелчок однажды) могут получить доступ к изолированному устройству хранения данных. Не все приложения могут иметь доступ к AppData. В зависимости от политики безопасности, наложенной на приложение, может также быть ограничен IsolatedStorage, но это обычно более доступно, чем система AppData/file.
Требованиями устройства хранения данных IsolatedStorage может управлять политика администратора.
Вы не должны знать, где или как изолированные данные устройства хранения данных хранятся. Это имеет универсальный API для доступа к нему во всех системах, можно полностью проигнорировать базовый путь, в котором это хранится. Как Вы отметили, это очень полезно для библиотеки, которая может понятия не иметь, как хост-приложение хранит данные.
У Вас могут также быть хранившие данные данных в изолированном устройстве хранения данных с, варьируются уровни изоляции очень легко. Посмотрите значения IsolatedStorageScope для получения дополнительной информации. Это - его тезка, таким образом, я предполагаю, что должен был перечислить эту точку сначала :)
На оборотной стороне:
Некоторые полезные ссылки: