JavaScript ES 6+]コードを値として表示機能を強化
14372 ワード
1. go
評価値の即時使用const go = (...args) => reduce((a, f) => f(a), args);
go(
add(0, 1),
a => a + 10,
a => a + 100,
log);
// -> 111
2. pipe
戻り関数
合成関数の作成
最終的には内部でgoを用いた関数と考えられる.const pipe = (f, ...fs) => (...as) => go(f(...as), ...fs);
const f = pipe(
(a, b) => a + b,
a => a + 10,
a => a + 100);
log(f(0, 1));
3.goを使用して読み取り可能なコードを生成
goで以前書いたコード(?)を再生成彼にやらせましょう.log(
reduce(
add,
map(p => p.price,
filter(p => p.price < 20000, products))));
🧙🏻♂️go(
products,
products => filter(p => p.price < 20000, products),
products => map(p => p.price, products),
prices => reduce(add, prices),
log);
上から下まで読めるようになり、読みやすくなりました.
4.goとcurryを使用してより読みやすいコードを作成する
Curryの作成
const curry = f =>
(a, ..._) => _.length ? f(a, ..._) : (..._) => f(a, ..._);
関数(f)を受信して関数(=>すべて)を返す
実行時に2つ以上のパラメータがある場合は、すぐに受信した関数を実行し、/2個未満の場合は関数を戻し、その後受信したパラメータを結合して実行します.const mult = curry((a, b) => a * b);
log(mult(3)(2));
const mult3 = mult(3);
log(mult3(10));
log(mult3(5));
log(mult3(3));
の手配を
🧙🏻♂️
使用
go(
products,
filter(p => p.price < 20000),
map(p => p.price),
reduce(add),
log);
上記のように簡単にできます.
5.関数の組合せを使用した関数の作成 const total_price = pipe(
map(p => p.price),
reduce(add));
const base_total_price = predi => pipe(
filter(predi),
total_price);
go(
products,
base_total_price(p => p.price < 20000),
log);
go(
products,
base_total_price(p => p.price >= 20000),
log);
Reference
この問題について(JavaScript ES 6+]コードを値として表示機能を強化), 我々は、より多くの情報をここで見つけました
https://velog.io/@imyourgenie/JavaScript-ES6-코드를-값으로-다루어-표현력-높이기
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
const go = (...args) => reduce((a, f) => f(a), args);
go(
add(0, 1),
a => a + 10,
a => a + 100,
log);
// -> 111
戻り関数
合成関数の作成
最終的には内部でgoを用いた関数と考えられる.
const pipe = (f, ...fs) => (...as) => go(f(...as), ...fs);
const f = pipe(
(a, b) => a + b,
a => a + 10,
a => a + 100);
log(f(0, 1));
3.goを使用して読み取り可能なコードを生成
goで以前書いたコード(?)を再生成彼にやらせましょう.log(
reduce(
add,
map(p => p.price,
filter(p => p.price < 20000, products))));
🧙🏻♂️go(
products,
products => filter(p => p.price < 20000, products),
products => map(p => p.price, products),
prices => reduce(add, prices),
log);
上から下まで読めるようになり、読みやすくなりました.
4.goとcurryを使用してより読みやすいコードを作成する
Curryの作成
const curry = f =>
(a, ..._) => _.length ? f(a, ..._) : (..._) => f(a, ..._);
関数(f)を受信して関数(=>すべて)を返す
実行時に2つ以上のパラメータがある場合は、すぐに受信した関数を実行し、/2個未満の場合は関数を戻し、その後受信したパラメータを結合して実行します.const mult = curry((a, b) => a * b);
log(mult(3)(2));
const mult3 = mult(3);
log(mult3(10));
log(mult3(5));
log(mult3(3));
の手配を
🧙🏻♂️
使用
go(
products,
filter(p => p.price < 20000),
map(p => p.price),
reduce(add),
log);
上記のように簡単にできます.
5.関数の組合せを使用した関数の作成 const total_price = pipe(
map(p => p.price),
reduce(add));
const base_total_price = predi => pipe(
filter(predi),
total_price);
go(
products,
base_total_price(p => p.price < 20000),
log);
go(
products,
base_total_price(p => p.price >= 20000),
log);
Reference
この問題について(JavaScript ES 6+]コードを値として表示機能を強化), 我々は、より多くの情報をここで見つけました
https://velog.io/@imyourgenie/JavaScript-ES6-코드를-값으로-다루어-표현력-높이기
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
log(
reduce(
add,
map(p => p.price,
filter(p => p.price < 20000, products))));
go(
products,
products => filter(p => p.price < 20000, products),
products => map(p => p.price, products),
prices => reduce(add, prices),
log);
Curryの作成
const curry = f =>
(a, ..._) => _.length ? f(a, ..._) : (..._) => f(a, ..._);
関数(f)を受信して関数(=>すべて)を返す実行時に2つ以上のパラメータがある場合は、すぐに受信した関数を実行し、/2個未満の場合は関数を戻し、その後受信したパラメータを結合して実行します.
const mult = curry((a, b) => a * b);
log(mult(3)(2));
const mult3 = mult(3);
log(mult3(10));
log(mult3(5));
log(mult3(3));
の手配を
🧙🏻♂️
使用
go(
products,
filter(p => p.price < 20000),
map(p => p.price),
reduce(add),
log);
上記のように簡単にできます.5.関数の組合せを使用した関数の作成 const total_price = pipe(
map(p => p.price),
reduce(add));
const base_total_price = predi => pipe(
filter(predi),
total_price);
go(
products,
base_total_price(p => p.price < 20000),
log);
go(
products,
base_total_price(p => p.price >= 20000),
log);
Reference
この問題について(JavaScript ES 6+]コードを値として表示機能を強化), 我々は、より多くの情報をここで見つけました
https://velog.io/@imyourgenie/JavaScript-ES6-코드를-값으로-다루어-표현력-높이기
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
const total_price = pipe(
map(p => p.price),
reduce(add));
const base_total_price = predi => pipe(
filter(predi),
total_price);
go(
products,
base_total_price(p => p.price < 20000),
log);
go(
products,
base_total_price(p => p.price >= 20000),
log);
Reference
この問題について(JavaScript ES 6+]コードを値として表示機能を強化), 我々は、より多くの情報をここで見つけました https://velog.io/@imyourgenie/JavaScript-ES6-코드를-값으로-다루어-표현력-높이기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol