기존의 다형성 높이기, _keys, 에러

jodmsoluth·2020년 3월 13일
0

함수형프로그래밍

목록 보기
11/17

1._each의 외부 다형성 높이기

var _length = _get('length');

function _each(list, iter) {
  // 기존에 _get을 쓰지 않으면 null이 들어가서 에러가 난다.
  // _length(list)가 undefined면 for문 실행하지 않는다.
  for (var i = 0, len = _length(list); i < len; i++) {
    iter(list[i]);
  }
  return list;
}

_each(null, console.log);
// 에러가 아니라 동작하지 않는다.
console.log(_map(null, function(v) {return v;}));

_go(null,
    _filter(function(v) { return v % 2; }),
    _map(function(v) { return v * v; }),
    console.log);
// 예외적인 데이터가 들어와도 에러가 나지 않는다.
  1. _keys 만들기
function _is_object(obj) {
  return typeof obj === 'object' && !!obj;
}

function _keys(obj) {
  return _is_object(obj) ? Object.keys(obj) : [];
}

console.log(_keys({name : 'ID', age : 30});       
  1. _each 외부 다형성 높이기
    객체가 들어가도 실행 가능
function _each(list, iter) {
  var keys = _keys(list);
  for (var i = 0, len = keys.length; i < len; i++) {
    iter(list[keys[i]]);
  }
  return list;
}

_each({
  13 : 'ID',
  19 : 'HD',
  29 : 'HD',
}, function(name) {
  console.log(name);
})
// 실행가능

console.log(_map({
  13 : 'ID',
  19 : 'HD',
  29 : 'HD',
}, function(name) {
  return name.toLowerCase();
}));

_go({
  13 : 'ID',
  19 : 'HD',
  29 : 'HD',
 },
 _map(function(name) {
 	return name.toLowerCase();
 }),
 console.log)
profile
풀스택이 되고 싶은 주니어 웹 개발자입니다.

0개의 댓글