博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[JS Compse] 4. A collection of Either examples compared to imperative code
阅读量:5244 次
发布时间:2019-06-14

本文共 1843 字,大约阅读时间需要 6 分钟。

For if..else:

const showPage() {  if(current_user) {    return renderPage(current_user);  } else {    return showLogin();  }}const showPage() {  fromNullable(current_user)    .fold(showLogin, renderPage)}

 

const getPrefs = user => {  if(user.premium) {    return loadPrefs(user.preferences)  } else {    return defaultPrefs;  }}const getPrefs = user =>   (user.premium ? Right(user): Left('not premium'))  .map(p => user.preferences)  .fold(    x => defaultPrefs,    x => loadPrefs(x)  )

 

const streetName = user => {  const address = user.address;    if(address) {    const street = address.street;        if(street) {      return street.name;    }  }  return 'no street';}cosnt streetName = user =>   fromNullable(user.address)    .flatMap(address => fromNullable(address.street))    .map(street => street.name)    .fold(e => 'no street', n => n)

 

const concatUniq = (x, ys) => {  const found = ys.filter(y => y === x)[0]  return found ? ys : ys.concat(x);}const concatUniq = (x, ys) =>   fromNullable(ys.filter(y => y === x)[0]) // fromNullable needs value  .fold(() => ys.concat(x), y => ys)

 

const wrapExamples = example => {  if(example.previewPath){    try {      example.preview = fs.readFileSync(example.previewPath)    } catch(e) {          }        return example;  }}const readFile = x => tryCatch(() => readFileSync(x));const wrapExample = example =>   fromNullabel(exampe.previewPath)  .flatMap(readFile)  .fold(() => example,         ex => Object.assign({preview: p}, ex);       )

 

const parseDbUrl = cfg => {  try {    const c = JSON.parse(cfg);    if(c.url) {      return c.url.match(/..../)    } catch(e) {      return null    }  }}const parseDbUrl = cfg =>   tryCatch(() => JSON.parse(cfg))  .flatMap(c => fromNullable(c.url))  .fold(    e => null,    u => u.match(/..../)  )

 

转载于:https://www.cnblogs.com/Answer1215/p/6175759.html

你可能感兴趣的文章
java.io.IOException: read failed, socket might closed or timeout, read ret: -1
查看>>
java 常用命令
查看>>
CodeForces Round #545 Div.2
查看>>
卷积中的参数
查看>>
51nod1076 (边双连通)
查看>>
Item 9: Avoid Conversion Operators in Your APIs(Effective C#)
查看>>
学习Spring Boot:(二十八)Spring Security 权限认证
查看>>
深入浅出JavaScript(2)—ECMAScript
查看>>
STEP2——《数据分析:企业的贤内助》重点摘要笔记(六)——数据描述
查看>>
ViewPager的onPageChangeListener里面的一些方法参数:
查看>>
Jenkins关闭、重启,Jenkins服务的启动、停止方法。
查看>>
CF E2 - Array and Segments (Hard version) (线段树)
查看>>
Linux SPI总线和设备驱动架构之四:SPI数据传输的队列化
查看>>
SIGPIPE并产生一个信号处理
查看>>
CentOS
查看>>
Linux pipe函数
查看>>
java equals 小记
查看>>
爬虫-通用代码框架
查看>>
2019春 软件工程实践 助教总结
查看>>
YUV 格式的视频呈现
查看>>