Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: stud 26. 08. 2015, 14:57:42
-
Jak se dá napsat ve Swiftu generická funkce pro ukládání mezivýsledků? Něco jako
f = dynamicFunction(faktoriál)
print(f(5))
Vzhledem k funkcionalitě jazyka by to mělo jít, ale vůbec nevím, kde začít :(
-
func memoize<T:Hashable,U>(block:(T->U,T)->U) -> T -> U {
var memo = Dictionary<T,U>()
var result:(T->U)!
result = { x in
if let q = memo[x] { return q }
let r = block(result, x)
memo[x] = r
return r
}
return result
}
let faktoriál = memoize { f, n in n <= 1 ? 1 : n * f(n - 1) }
-
http://babel.blog.root.cz/2015/12/08/swift-pro-linux/