Próbowałem dowiedzieć się więcej o programowaniu funkcjonalnym, patrząc na dokumentację podkreślenia i próbując napisać własne wersje najczęściej używanych funkcji.Wdrażanie i zrozumienie funkcji "pamiętaj" w podkreśleniu & lodash
Przechodząc przez "memoize" - miałem kłopot z owinięciem głowy i znalazłem informację w "Dobrej części" Crockforda.
_.memoize = function(func) {
// 'cache' object is used to hold the result of the memoized fn's call
var cache = {};
var recur = function(n) {
var result = cache[n];
if (typeof result === 'undefined') {
result = func.apply(this, arguments);
cache[n] = result;
}
return result;
}
return recur;
};
mógłbyś mi pomóc zrozumieć, jeśli mój wykorzystanie .apply było nawet konieczne, a jeśli istnieje jakakolwiek poprawa rdzeń mogę zrobić z tym kodem? Naprawdę doceniam pomoc!
Tak, użycie polecenia jest konieczne, ponieważ nie jesteś świadomy, ile argumentów 'func' będzie miał –
Więc to jest kod, który sam napisałeś? I nic nie rozumiesz? Albo które części podkreślenia nie rozumiesz? – Bergi
@Bergi - Udało mi się dotrzeć do tego rozwiązania, ale chciałem sprawdzić, czy były jakieś błędy lub ulepszenia, które mogłem wprowadzić. Jak wspomniałem poniżej, od tego czasu zmieniłem użycie typeof i polegam na hasOwnProperty. Jednak staram się dowiedzieć, w jaki sposób mogę zapobiec uruchomieniu funkcji memoized więcej razy, niż to konieczne. – tsaiDavid