이야기를 나눠요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
[코드팩토리] [입문] Dart 언어 4시간만에 완전정복
노트북사용
안녕하세요 강의 잘 듣고있습니다. 빠른 답변감사드립니다. 컴퓨터가아닌 노트북으로 플러터를 이용해 어플을 만드는 목적인데 혹시 추천해주실만한 노트북사양이나 제품이 있을까요?
-
[코드팩토리] [입문] Dart 언어 4시간만에 완전정복
2강부터 너무 어렵네요
1강을 3번 정도 보면서 익히려고 노력하는데 머릿속에 다 들어오거나 외운 느낌은 아니에요. 그렇게 2강을 듣기 시작했는데 너무 어렵네요. 공부방법을 어떻게 하면 좋죠? 1강은 강사님이 알려주신거 코드 직접해보고 자료로만들고 했는데... 2강오니 이해안되는 부분들이 많아요.
-
함수형 프로그래밍과 JavaScript ES6+
products가 사라지는 과정
저도 완벽하게 이해했다고 볼 수는 없지만, 정리해봤어요. 혹시 틀리신 부분 지적해주시면 감사합니다! const filter = curry((f, iter) => { let res = []; for (const a of iter) { if (f(a)) res.push(a); } return res; }); filter 자체를 log해보면 ..const anonymous = (a, ..._) => .length ? f(a, ..._) : (..._) => f(a, ..._)이런 형태에요.이를 filter에 맞게 풀어보면 ..const filter = (a, ..._) => { _.length ? ( const anonymous = (a, ..._) => { let res = []; for (const b of _) { if (a(b)) res.push(b); } return res; } ) : ( const anonymous = (a) => (..._) => { let res = []; for (const b of _) { if (a(b)) res.push(b); } return res; } }; 여기서 (p) => p.price < 20000) 가 a에 들어가면..... (a) => (..._) => { let res = []; for (const b of _) { if (a(b)) res.push(b); } return res; } ... const anonymous = (..._) => { let res = []; for (const b of _) { if ((b) => b.price < 20000) res.push(b); } return res; }이렇게 되는 거에요.go 부분을 풀어보기 전에 reduce를 풀어보면 ..const reduce = (a, ..._) => { _.length ? ( // 여기서 acc에 ..._이 할당되고 iter는 undefined입니다. const anonymous = (a, acc, iter) => { if (!iter) { iter = acc[Symbol.iterator](); acc = iter.next().value; } for (const b of iter) { acc = a(acc, b); } return acc; } ) : ( const anonymous = (a) => (acc, iter) => { if (!iter) { iter = acc[Symbol.iterator](); acc = iter.next().value; } for (const b of iter) { acc = a(acc, b); } return acc; } ) } go의 reduce는 ..const go = (...args) => reduce((a, f) => f(a), args); const go = (...args) => { let iter = args[Symbol.iterator](); let acc = iter.next().value; for (const b of iter) { acc = b(acc); } return acc; }종합했을 때, go(products, filter(p => p.price < 20000), log)는 다음과 같습니다.// args는 [products, filter(p => p.price < 20000), log] const go = (...args) => { // iter = [filter(p => p.price < 20000), log] // acc = products let iter = args[Symbol.iterator](); let acc = iter.next().value; // 원래 for문 자리지만, 2개 뿐이니까 나열할게요. // for (const b of iter) { // acc = b(acc); // } // 1. filter 평가 -> iter[0] let res = []; // for (const b of products) { // if ((b) => b.price < 20000) res.push(b); // } if ((b = { name: "반팔티", price: 15000 }) => b.price < 20000) res.push(b); if ((b = { name: "긴팔티", price: 20000 }) => b.price < 20000) res.push(b); if ((b = { name: "핸드폰케이스", price: 15000 }) => b.price < 20000) res.push(b); if ((b = { name: "후드티", price: 30000 }) => b.price < 20000) res.push(b); if ((b = { name: "바지", price: 25000 }) => b.price < 20000) res.push(b); // res = [15000, 15000]; // filter 끝의 return res와 // go의 for문에서 acc = b(acc);에 의해 acc = res; // 2. log 수행 -> iter[1] acc = log(acc); // console.log의 리턴은 undefined, 출력은 정상 return acc; } 봐주셔서 감사합니다! 👏
-
함수형 프로그래밍과 JavaScript ES6+
세상에서 제일 신기한 기본기..
이것도 모르고 js를 써왔던 내 인생이 레전드네요..