zoukankan      html  css  js  c++  java
  • 实践:不同编程语言, 函数检测多属性的全部合理的具体实现。

    以java和erlang为例:

    ①、java:面向对象 且 存在return。

    ②、erlang: 函数性编程  不存在return


    %% 模拟检测 多个输入信息是否合理,只要有一个不合理,则返回。

    %% 举例:UName,UEmail,UPass,USex,UMoney,UOwn.
    %% 以上述描述的顺序为检测的优先级,检测函数: 以check为前缀 加 要检测的属性名字。

    %% java:存在return,直接使用return。
    %% 方法一:

    regist(UName,UEmail,UPass,USex,UMoney,UOwn)
    
    {
    
        if(!checkName(UName))
        {
            return ;
        }
    
        if(!checkEmail(UEmail))
        {
            return ;
        }
    
        if(!checkPass(UPass))
        {
            return ;
        }
    
        if(!checkSex(USex))
        {
            return ;
        }
    
        if(!checkMoney(UMoney))
        {
            return ;
        }
    
        if(!checkOwn(UOwn))
        {
            return ;
        }
    }
    



    %% 在erlang中不存在return:
    %% 方法二、

    regist(UName,UEmail,UPass,USex,UMoney,UOwn)->
    	case checkName(UName)
    	of 
    		ok->
    			
    			case
    				checkEmail(UEmail)
    			of 
    				ok->
    					case checkPass(UPass)
    					of					
    					ok->
    						case checkSex(USex)
    						of
    						ok->
    							case 
    							of
    								ok->
    									case checkMoney(UMoney)
    									of
    										ok->	
    											case 
    												checkOwn(UOwn)
    											of
    												ok->	
    													ok;
    												error-> 
    													error 
    											end
    										;
    										error-> error
    									end
    								;
    								error-> 
    									error
    							end
    						;
    						error-> error
    						end
    					;
    					error->error 
    					end
    				;
    			error->
    				error
    			end
    			;
    		error->error
    	end
    .
    



        
    %% 方案三、

    regist(UName,UEmail,UPass,USex,UMoney,UOwn)->
        NameResult = checkName(UName),%% 返回值:0,1
        EmailResult =checkEmail(UEmail,NameResult),
        PassResult = checkPass(UPass,EmailResult),
        SexResult = checkSex(USex,PassResult),
        MoneyResult = checkMoney(UMoney,SexResult),
        checkOwn(UOwn,MoneyResult).
        
    %% 通过名字验证后才能进行邮箱验证,否则直接放回名字验证的结果。
    checkEmail(UEmail,1)->
        Result;
    checkEmail(UEmail,NameResult)->
        NameResult;
    


        
    %% 猜测:方案三可能比方案二慢.
    %% 确定: 方案三的可读性远远超过于方案二.
    %% 缺陷:方案三的函数 比 方案二的增加了参数。
    %% 实践:需要检测方案二 和 方案三 的 可行性 和 效率

  • 相关阅读:
    浅谈C++ STL中的优先队列(priority_queue)
    哈夫曼树与哈夫曼编码
    Binary Search 的递归与迭代实现及STL中的搜索相关内容
    Prime 算法的简述
    估算网站需要多少宽带方法
    微服务服务拆分步骤
    第一次有人把科创板讲得这么简单明了
    一个人优秀到可怕的三个迹象!一旦具备,必为人中龙凤,大富大贵
    美元加息怎么“剪羊毛”
    英国脱欧的影响
  • 原文地址:https://www.cnblogs.com/ribavnu/p/3731795.html
Copyright © 2011-2022 走看看