ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

F# 函数式编程之 - 乾坤大挪移(对象变参数)

2020-12-03 23:36:11  阅读:253  来源: 互联网

标签:startsWith 函数 oldStr 挪移 编程 replace let 乾坤 newStr


标题所说的 “乾坤大挪移” 是指将面向对象编程中的 “对象” 换个位置,使其变成函数式编程中的函数的 “参数”,以便符合 F# 的编程风格。

之所以能进行这种挪移,是因为 F# 虽然以函数式为主,但已经被扩充成也支持对象(虽然不是 “纯函数式” 听起来不够酷,但更实用更好用了,如果 F# 是纯函数式我反而没兴趣)。

在 F# 里,字符串是对象,它有方法:

let hello = "hejjo".Replace("j", "l")

但这样操作,很不F#, 函数式编程的感觉出不来,所以我们下面来进行挪移:

let replace oldStr newStr (s:string) = 
  s.Replace(oldValue=oldStr, newValue=newStr)

这样我们得到了一个函数 replace, 它可以用 F# 的风格来操作:

"hejjo" |> replace "j" "l"

特别是与其他函数配合时,就更能体现 F# 风格的优雅:

// 例子出处: https://fsharpforfunandprofit.com/posts/partial-application/

let replace oldStr newStr (s:string) = 
  s.Replace(oldValue=oldStr, newValue=newStr)

let startsWith lookFor (s:string) = 
  s.StartsWith(lookFor)

let result = 
     "hello" 
     |> replace "h" "j" 
     |> startsWith "j"

["the"; "quick"; "brown"; "fox"] 
     |> List.filter (startsWith "f")

let compositeOp = replace "h" "j" >> startsWith "j"
let result = compositeOp "hello"

本文内容比较简短,主要介绍了 F# 支持面向对象,并介绍了将面向对象改写成函数式的一个示例。

标签:startsWith,函数,oldStr,挪移,编程,replace,let,乾坤,newStr
来源: https://www.cnblogs.com/ai42/p/14083559.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有