Другой пример:
class func getExchangeRate(#baseCurrency: String, foreignCurrency:String, completion: ((result:Double?) -> Void)!){
let baseURL = kAPIEndPoint
let query = String(baseCurrency)+"_"+String(foreignCurrency)
var finalExchangeRate = 0.0
if let url = NSURL(string: baseURL + query) {
NSURLSession.sharedSession().dataTaskWithURL(url) { data, response, error in
if ((data) != nil) {
let jsonDictionary:NSDictionary = NSJSONSerialization.JSONObjectWithData(data!, options: nil, error: nil) as NSDictionary
if let results = jsonDictionary["results"] as? NSDictionary{
if let queryResults = results[query] as? NSDictionary{
if let exchangeRate = queryResults["val"] as? Double{
let priority = DISPATCH_QUEUE_PRIORITY_DEFAULT
dispatch_async(dispatch_get_global_queue(priority, 0)) {
dispatch_async(dispatch_get_main_queue()) {
completion(result: exchangeRate)
}
}
}
}
}
}
else {
completion(result: nil)
}
}.resume()
}
}
Вызов:
Currency.getExchangeRate(baseCurrency: "USD", foreignCurrency: "EUR") { (result) -> Void in
if let exchangeValue = result {
print(exchangeValue)
}
}
Занимательный вопрос :)
Получил это совершенно неправильно при первом проходе :( Я предположил, что YAML-версия базового INI-файла отражала структуру структуры данных, использованной при написании сценария динамической инвентаризации, и поэтому группы содержали списки хостов. Это не так, и они этого не делают.
Я случайно прочитал документы Inventory сегодня. Это ясно показывает, что в YAML-версии базового INI описывают, что группа действительно является словарем, содержащим ключи имен хостов и значения либо пустого словаря, либо словаря специфических для хоста опций.
Пример из документации:
all:
hosts:
mail.example.com:
ansible_port: 5555
ansible_host: 192.0.2.50
children:
webservers:
hosts:
foo.example.com:
bar.example.com:
dbservers:
hosts:
one.example.com:
two.example.com:
three.example.com:
Короче говоря, вы застряли с двоеточиями.