Functional
O.O.
função que retorna uma nova função
até que tenha recebido todos seus argumentos.
var add = function (x) {
return function (y) {
return x + y
}
}
var add3 = add(3) // function(y){}
add3(4) // 7add3(5) // 8add(1)(1) // 2... ?var add = _.curry(function (x, y) {
return x + y
})
var add3 = add(3) // function(y){}
add3(4) // 7add(1, 1) // 2var _ = require('lodash')var _ = require('lodash')
var resto = _.curry(
function (divisor, dividendo) {
return dividendo % divisor
}
)
resto(3, 9) // 0
var isOdd = resto(2)
isOdd(4) // 0
isOdd(9) // 1var filter = _.curry(
function (fn, list) {
return list.filter(fn)
}
)
filter(isOdd, [1,2,3,4,5]) // [1,3,5]var somenteImpares = filter(isOdd)
somenteImpares([1,2,3,4,5]) // [1,3,5]acontece quando duas ou mais funções são combinadas para gerar uma nova função.
var _ = require("lodash")
var last = function (list) {
var list_reversed = _.reverse(list)
return _.first(list_reversed)
}var last = _.compose(_.first, _.reverse)last([1,2,3,4,5]) // 5var wordCount = function(str) {
var words = split(' ', str)
return length(words)
}
var wordCount = _.compose(
length,
split(' ')
)
wordCount("Tá chovendo aí?") // 3Hey Underscore, You're Doing It Wrong!