• 漂亮的代码1:计算器


    看到一个代码问题:

    seven(times(five())); // must return 35
    four(plus(nine())); // must return 13
    eight(minus(three())); // must return 5
    six(dividedBy(two())); // must return 3
    

    自己写成了这样:

    function zero() {
    	if(arguments.length === 0){
      	return 0;
      } else {
        var result = arguments[0];
        return result.op(0);
      }
    }
    function one() {
      if(arguments.length === 0){
      	return 1;
      } else {
        var result = arguments[0];
        return result.op(1);
      }
    }
    function two() {
      if(arguments.length === 0){
      	return 2;
      } else {
        var result = arguments[0];
        return result.op(2);
      }
    }
    function three() {
      if(arguments.length === 0){
      	return 3;
      } else {
        var result = arguments[0];
        return result.op(3);
      }
    }
    function four() {
      if(arguments.length === 0){
      	return 4;
      } else {
        var result = arguments[0];
        return result.op(4);
      }
    }
    function five() {
      if(arguments.length === 0){
      	return 5;
      } else {
        var result = arguments[0];
        return result.op(5);
      }
    }
    function six() {
      if(arguments.length === 0){
      	return 6;
      } else {
        var result = arguments[0];
        return result.op(6);
      }
    }
    function seven() {
      if(arguments.length === 0){
      	return 7;
      } else {
        var result = arguments[0];
        return result.op(7);
      }
    }
    function eight() {
      if(arguments.length === 0){
      	return 8;
      } else {
        var result = arguments[0];
        return result.op(8);
      }
    }
    function nine() {
    	if(arguments.length === 0){
      	return 9;
      } else {
        var result = arguments[0];
        return result.op(9);
      }
    }
    
    function plus() {
       return {
          op:function(left){
             return left + this.right;
          },
          right:arguments[0]
       }
    }
    function minus() {
       return {
          op:function(left){
             return left - this.right;
          },
          right:arguments[0]
       }
    }
    function times() {
       return {
          op:function(left){
             return left * this.right;
          },
          right:arguments[0]
       }
    }
    function dividedBy() {
       return {
          op:function(left){
             return left / this.right;
          },
          right:arguments[0]
       }
    }
    

    看到别人是如何解决的,真是漂亮:

    var n = function(digit) {
      return function(op) {
        return op ? op(digit) : digit;
      }
    };
    var zero = n(0);
    var one = n(1);
    var two = n(2);
    var three = n(3);
    var four = n(4);
    var five = n(5);
    var six = n(6);
    var seven = n(7);
    var eight = n(8);
    var nine = n(9);
    
    function plus(r) { return function(l) { return l + r; }; }
    function minus(r) { return function(l) { return l - r; }; }
    function times(r) { return function(l) { return l * r; }; }
    function dividedBy(r) { return function(l) { return l / r; }; }
    

    自己写成了一堆屎,好好学习。

  • 相关阅读:
    Windows远程桌面连接CentOS 7
    CentOS7 系统菜单中添加快捷方式
    CentOS 7 创建桌面快捷方式
    Centos7 可执行程序自定义为系统服务
    CentOS 7 中 Docker 的安装
    CentOS 7 需要安装的常用工具,及centos安装fcitx 搜狗输入法的坑旅
    C++中结构体与类的区别 2
    C++中结构体与类的区别 1
    C++ 11 自旋锁
    Imply.io单机安装
  • 原文地址:https://www.cnblogs.com/htoooth/p/5528304.html
Copyright © 2020-2023  润新知