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

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

  • 相关阅读:
    VUE 引入element ui 样式不生效解决
    Spark项目故障思路整理总结
    Spark-环境安装
    01.Kettle的安装-千亿级数仓环境搭建
    千亿级数仓day01-项目的简介
    Umeng项目day04
    Umengday12-统计指标
    Umengday11-azkaban调度
    Umengday09-hive自定义UDTF函数叉分函数
    Docker配置jdk1.8
  • 原文地址:https://www.cnblogs.com/htoooth/p/5528304.html
Copyright © 2011-2022 走看看