zoukankan      html  css  js  c++  java
  • 漂亮的代码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; }; }
    

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

  • 相关阅读:
    LeetCode 42. Trapping Rain Water
    LeetCode 209. Minimum Size Subarray Sum
    LeetCode 50. Pow(x, n)
    LeetCode 80. Remove Duplicates from Sorted Array II
    Window10 激活
    Premiere 关键帧缩放
    AE 「酷酷的藤」特效字幕制作方法
    51Talk第一天 培训系列1
    Premiere 视频转场
    Premiere 暴徒生活Thug Life
  • 原文地址:https://www.cnblogs.com/htoooth/p/5528304.html
Copyright © 2011-2022 走看看