F# 函数式编程之 - 乾坤大挪移(对象变参数)
作者:互联网
标题所说的 “乾坤大挪移” 是指将面向对象编程中的 “对象” 换个位置,使其变成函数式编程中的函数的 “参数”,以便符合 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