Может ли кто-нибудь дать мне пример underscore.js _.memoize() в действии?пример underscore.js _.memoize() в действии?
Предпочтительно использовать hashFunction и еще более предпочтительно в coffeescript?
Вот немного измененная версия этой милой функции изменения счета от SICP в CoffeeScript:
countChange = (amount)->
cc = (amount, kindsOfCoins)->
firstDenomination = (kindsOfCoins)->
switch kindsOfCoins
when 1 then 1
when 2 then 5
when 3 then 10
when 4 then 25
if amount is 0 then 1
else if amount < 0 or kindsOfCoins is 0 then 0
else
(cc amount, (kindsOfCoins - 1)) +
(cc (amount - firstDenomination(kindsOfCoins)), kindsOfCoins)
cc amount*100, 4
console.log "Ways to make change for $0.85: " + countChange(.85)
Как я мог бы использовать _.memoize нижнего подчеркивания (в) на том, что, например?
Большое спасибо заранее!
ps .. также, пожалуйста, не стесняйтесь снимать отверстия в способе, которым была закодирована функция. Я очень новичок в coffeescript, и любая помощь в том, чтобы сделать этот код более идиоматичным, тоже приветствуется.
Wow! фантастический ответ по всем направлениям. Большое спасибо за все детали и за реструктуризацию. Все очень проницательно. – James
quick followup Q: в hashFunction, почему бы вам вернуть это: «# {a}, # {k}" вместо этого: [a, k] – James
@James: хэш-функция должна возвращать то, что может быть использовано как ключ в объекте memo, лучше быть явным о преобразовании, чем полагаться на браузер, делая что-то разумное с помощью '[a, k] .toString()'. –