实践:不同编程语言, 函数检测多属性的全部合理的具体实现。
以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->casecheckEmail(UEmail)of ok->case checkPass(UPass)of ok->case checkSex(USex)ofok->case ofok->case checkMoney(UMoney)ofok-> case checkOwn(UOwn)ofok-> ok;error-> error end;error-> errorend;error-> errorend;error-> errorend;error->error end;error->errorend;error->errorend
.
%% 方案三、
regist(UName,UEmail,UPass,USex,UMoney,UOwn)->NameResult = checkName(UName),%% 返回值:0,1EmailResult =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;
%% 猜测:方案三可能比方案二慢.
%% 确定: 方案三的可读性远远超过于方案二.
%% 缺陷:方案三的函数 比 方案二的增加了参数。
%% 实践:需要检测方案二 和 方案三 的 可行性 和 效率。
转载于:https://www.cnblogs.com/ribavnu/p/3731795.html
实践:不同编程语言, 函数检测多属性的全部合理的具体实现。相关推荐
- json数据解析_VBA 实践指南 -- Split函数解析Json数据
什么是JSON? JSON(JavaScript Object Notation) 是一种及其轻量级的数据交换格式,它是 ECMAScript (欧洲计算机协会制定的JavaScript规范)的一个子 ...
- R语言stringr包str_detect函数检测字符串中模式存在与否实战
R语言stringr包str_detect函数检测字符串中模式存在与否实战 目录 R语言stringr包str_detect函数检测字符串中模式存在与否实战 #导入stringr包
- R语言attributes函数(获取属性、设置属性)、attr函数(改变一个属性)、structure函数(改变数据形状)实战
R语言attributes函数(获取属性.设置属性).attr函数(改变一个属性).structure函数(改变数据形状)实战 目录
- 【C 语言】文件操作 ( 配置文件读写 | 框架搭建 | 头文件定义 | 头文件导入限制 | 兼容 C++ 语言 | 函数形参输入输出属性注释)
文章目录 一.头文件定义 1.头文件导入限制 2.兼容 C++ 语言 3.函数形参输入输出属性 4.代码示例 一.头文件定义 1.头文件导入限制 头文件导入限制 : 防止头文件多次导入 , 将头文件的 ...
- 学习旧岛小程序 (5) observer 函数中修改属性的值
不要在一个属性的 observer 函数中修改属性的值 不然会造成内存泄露 错误代码: properties: {/* 期刊号 */index: {type: String,observer: fu ...
- python装饰器原理wraps(method)(self)_python装饰器中@wraps作用--修复被装饰后的函数名等属性的改变...
Python装饰器(decorator)在实现的时候,被装饰后的函数其实已经是另外一个函数了(函数名等函数属性会发生改变),为了不影响,Python的functools包中提供了一个叫wraps的de ...
- OpenCV实践之路——人脸检测(C++/Python) 【转】
转自:http://blog.csdn.net/xingchenbingbuyu/article/details/51105159 版权声明:本文为博主原创文章,转载请联系作者取得授权. 本文由@星沉 ...
- js函数的内部属性---arguments,callee,caller
在接下来的几篇文章中,我大家谈谈函数的内部属性,arguments,callee,caller (1)arguments,是一个类数组对象,其中包含了传入函数的所有参数,主要用途是,保存函数的参数: ...
- Angular set函数和Component属性的命名冲突问题
set函数和Component属性名称不能重复,可以把Component属性加上下划线,暗示其是私有属性,然后通过公有的set来管理. 更多Jerry的原创文章,尽在:"汪子熙":
最新文章
- Centos 7.4 中http-2.4 的基本实现和 https 的实现
- 根据空间线上的两点生成圆柱体 算法
- python 微信爬虫_python3简单实现微信爬虫
- Get Started with Field Service
- python生成报告_python生成测试报告
- 在VS2003中以ClassLibrary工程的方式管理Web工程.
- Qt配置VS2017
- 北京师范大学新生入学计算机考试内容,北京师范大学
- 谁能制约云厂商滥用开源,谁来帮助开源软件作者?
- Python编程及应用师资研修班--昆明
- virtual关键字的使用(C# 参考)
- 【源代码】Image Deformation Using Moving Least Squares算法的实现
- 排序算法-快速排序(入门)
- 【RDMA】文档和教程和相关知识
- 对象存储介绍(腾讯云cos)
- 我的深圳真实驾考经历
- unity3d 注册表 Regedit
- 微信小程序开发工具报错对应的服务器证书无效
- CSR、SSR、SPA是什么
- python爬虫:利用BeautifulSoup爬取链家深圳二手房首页的详细信息
热门文章
- Go实战--二维码生成server
- Python教程-python字典中key的灵活使用fromkeys()
- struts2启动报错com/opensymphony/xwork2/spring/SpringObjectFactory.java:220:-1
- Service onStartCommand 返回值
- 这个星期压力貌似比较大啊!
- Windows Server 2016-Hyper-V HNV 新增功能
- Javascript二进制运算符的一些运用场景
- 即时通信(IM)和实时通信(RTC)的区别
- SVN服务器搭建详解
- efs解密-Advanced EFS Data Recovery2.1-含注册KEY