1

Тема: Лямбда лямбд, не розуміть

Озьдо повний код

Прихований текст

//Redux-Style Reducer
const person = (state = {}, action) => {
  switch(action.type){
    case 'ADD_INFO':
      return Object.assign({}, state, action.payload)
    default:
      return state;
  }
}

const infoAction = {type: 'ADD_INFO', payload: {name: 'Brian', framework: 'Angular'}}
const anotherPersonInfo = person(undefined, infoAction);
console.log('***REDUX STYLE PERSON***: ', anotherPersonInfo);

//Add another reducer
const hoursWorked = (state = 0, action) => {
  switch(action.type){
    case 'ADD_HOUR':
      return state + 1;
    case 'SUBTRACT_HOUR':
      return state - 1;
    default:
      return state;
  }
}
//Combine Reducers Refresher
const myReducers = {person, hoursWorked};
const combineReducers = reducers => (state = {}, action) => {
  return Object.keys(reducers).reduce((nextState, key) => {
    nextState[key] = reducers[key](state[key], action);
    return nextState;
  }, {});
};
/*
This gets us most of the way there, but really want we want is for the value of firstState and secondState to accumulate
as actions are dispatched over time. Luckily, RxJS offers the perfect operator for this scenario., to be discussed in next lesson.
*/
const rootReducer = combineReducers(myReducers);
const firstState = rootReducer(undefined, {type: 'ADD_INFO', payload: {name: 'Brian'}});
const secondState = rootReducer({hoursWorked: 10, person: {name: 'Joe'}}, {type: 'ADD_HOUR'});
console.log('***FIRST STATE***:', firstState);
console.log('***SECOND STATE***:', secondState);

я не можу наздогнати ось цю частину

const combineReducers = reducers => (state = {}, action) => {
  return Object.keys(reducers).reduce((nextState, key) => {
    nextState[key] = reducers[key](state[key], action);
    return nextState;
  }, {});
};

Як воно робе?

тут спілкуються українці, про політику, і інше (серед них є програмісти, але дуже мало, тому не заходьте туди лише з питаннями про програмування)
https://discord.gg/Zk29v4P
Подякували: 221VOLT1

2

Re: Лямбда лямбд, не розуміть

Замініть стрілочки на function, може, стане зрозуміліше.

Прихований текст

function combineReducers(reducers) {
    return function(state = {}, action) {
      return Object.keys(reducers).reduce(function(nextState, key){
        nextState[key] = reducers[key](state[key], action);
        return nextState;
    },{});
};

Подякували: FakiNyan, 221VOLT, leofun01, ostap34PHP4

3

Re: Лямбда лямбд, не розуміть

ааа, точно, от я затупив. Я забув про те, що коли тіло без {}, то там прихований return

тут спілкуються українці, про політику, і інше (серед них є програмісти, але дуже мало, тому не заходьте туди лише з питаннями про програмування)
https://discord.gg/Zk29v4P

4

Re: Лямбда лямбд, не розуміть

є ще одне питання, як ось це мона переписати?

const basicScan = testSubject.scan((acc, curr) => acc + curr, 0);

якщо

const basicScan = testSubject.scan(function(acc, curr) {return acc+curr;}, 0);

то ставте лойс, і можете нічо не писати

тут спілкуються українці, про політику, і інше (серед них є програмісти, але дуже мало, тому не заходьте туди лише з питаннями про програмування)
https://discord.gg/Zk29v4P

5

Re: Лямбда лямбд, не розуміть

А як ось це працює?

export const partyFilter = (state = person => person, action) => {
    switch(action.type){
        case SHOW_ATTENDING:
            return person => person.attending;
        case SHOW_ALL:
            return person => person;
        case SHOW_WITH_GUESTS:
            return person => person.guests;
        default:
            return state;
    }
};

Воно ж приймає

state

, котрий по замовчуванню дорівнює

function(person) { return person;  }

то як воно має доступ до

person

в тілі головної функції?

return person => person.attending;
тут спілкуються українці, про політику, і інше (серед них є програмісти, але дуже мало, тому не заходьте туди лише з питаннями про програмування)
https://discord.gg/Zk29v4P

6

Re: Лямбда лямбд, не розуміть

аа, пойняв, це ж просто довільне ім'я змінної

тут спілкуються українці, про політику, і інше (серед них є програмісти, але дуже мало, тому не заходьте туди лише з питаннями про програмування)
https://discord.gg/Zk29v4P
Подякували: bunyk1

7

Re: Лямбда лямбд, не розуміть

Йоханий бабай, я таку фігню без дужок взагалі не можу зрозуміти.

export const partyFilter = (state = person => person, action) => {

це ж типу функція яка приймає параметр state, який по дефолту функція ідентичності і якийсь параметр action?

Подякували: 221VOLT1

8

Re: Лямбда лямбд, не розуміть

ага

тут спілкуються українці, про політику, і інше (серед них є програмісти, але дуже мало, тому не заходьте туди лише з питаннями про програмування)
https://discord.gg/Zk29v4P

9

Re: Лямбда лямбд, не розуміть

тільки що був зустрів отаке

const password$ = Rx.Observable.fromEvent(password, 'keyup')
.map(({keyCode}) => keyCode – 48)
.filter(value => 0 <= value && value <= 9);

то дві години думав, що то за таке чудернацьке

value => 0 <= value
тут спілкуються українці, про політику, і інше (серед них є програмісти, але дуже мало, тому не заходьте туди лише з питаннями про програмування)
https://discord.gg/Zk29v4P
Подякували: koala, 221VOLT2

10

Re: Лямбда лямбд, не розуміть

FakiNyan написав:

тільки що був зустрів отаке

const password$ = Rx.Observable.fromEvent(password, 'keyup')
.map(({keyCode}) => keyCode – 48)
.filter(value => 0 <= value && value <= 9);

то дві години думав, що то за таке чудернацьке

value => 0 <= value

Я завжди вставляв  ES6 в babel компілятор - https://babeljs.io/repl/

Подякували: 221VOLT1

11

Re: Лямбда лямбд, не розуміть

FakiNyan написав:

тільки що був зустрів отаке

const password$ = Rx.Observable.fromEvent(password, 'keyup')
.map(({keyCode}) => keyCode – 48)
.filter(value => 0 <= value && value <= 9);

то дві години думав, що то за таке чудернацьке

value => 0 <= value

майже як в elixir ))
вітаю вас в чудному світі стрілочкових операторів))

https://blog.clever-games.win/
Це ще не кінець. Це навіть не початок кінця. Але, можливо, це кінець початку.
Зростання мудрості можна точно вимірювати ступенем зменшення злоби.
///// у творчій відпустці. не турбувати /////