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; }; }
    

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

  • 相关阅读:
    javaweb学习总结(五)——Servlet开发(一)
    机器学习(1)2017.3.2
    Java中三种变量
    Java中javadoc注释使用规则 转
    java中main函数的位置必须在public class类中么? (eclipse,editplus环境下)
    【C++】 私有成员变量的理解
    怕忘了
    隐写命令方法总结-(研究生创新联盟高校首届研究生网络与信息安全技术大赛)
    kali源
    几款chrome扩展和应用
  • 原文地址:https://www.cnblogs.com/htoooth/p/5528304.html
Copyright © 2011-2022 走看看