像这样的线性调用,不出错都好说,如果中间有环节出错了,要怎么处理呢?

一个基本的原则要遵守,便是不能只返回原始数据。

我们会对返回值做一次包装,比如Java中的Option,通过option.isPresent()来判断是否有值,通过opiton.get()来获取原始数据。

jsp用session将字符串转化为整形面向转换编程 jQuery

如果你的措辞没有现成的处理办法,你可以自己定义一个构造,它会返回这两种情形:

{:ok, value} 成功+数据

{:error, reason} 失落败+缘故原由

然后不才一个管道中,像这样根据传入的参数不同,来处理成功和失落败的逻辑:

image-20221004113321607思维转换练习

这章后面也有一些练习,一起来转换一下思维吧~

一、下面的需求表达为一个顶层的转换吗?也便是说,对付每一个需求,确定输入和输出。

将运费和发卖税加入订单中

根本订单->待发货订单 ,按照传统的编码思路,我们会有一个订单类,然后会实现一个打算运费的方法、一个打算发卖税的方法。
但是改变思路,专注于转换的话,就只用考虑输入和输出是什么,详细的转换办法就变成了黑盒的。

你的运用程序从一个文件中加载配置信息

文件路径->配置信息

有人登录到一个网络运用程序

上岸信息(用户名+密码之类的)->会话session

实在就这个练习来说,后面两个还是比较常规的,基本上都会这么去实现,以是,从第一题的觉得会比较明显一点,确实是思考的方向不一样了。

二、你要验证一个字符串是否是18到150之间的整数,如果是,则输出这个整数。

过程大概是这样:

字符串

→ [验证和转换]

→:ok, value}{:error, reason

须要把[验证和转换]的部分明确定义。

字符串→ [将字符串转换成整形] → [检讨值是否 >= 18] → [检讨值是否 <= 150] → {:ok, value} | {:error, reason}

这一章实在依旧是解耦的一种手段,让程序像乐高积木一样,用到那块拼那块,用不到了就拆掉,每个转换都是独立模块,可以自由地组合拼接。