我一直在学习F#和函数式编程,并试图以功能的方式做事.但是,当我重写一些我已用C#编写的代码时,我会陷入简单的if-then语句(只做一些事情而不返回值).我知道你可以在F#中解决这个问题:
if expr then do ()
Run Code Online (Sandbox Code Playgroud)
但是,我认为这是编码的必要方法?也许我对功能编程学得不够,但它对我来说似乎没什么用.我认为功能方法是组合函数和表达式,而不是简单地一个接一个地执行语句,这是if-then似乎鼓励的.
所以,我错过了什么,如果 - 那么在功能世界中是完美的吗?如果没有,这种陈述的功能等同物是什么?我怎么能拿一个if-then然后把它变成功能呢?
编辑:我可能会问错误的问题(对不起,对于函数式编程来说仍然相当新):让我们采用一个真实世界的例子让我甚至问这个问题:
if not <| System.String.IsNullOrWhiteSpace(data) then do
let byteData = System.Text.Encoding.Unicode.GetBytes(data)
req.ContentLength <- int64 byteData.Length
let postStream : System.IO.Stream = req.GetRequestStream()
postStream.Write(byteData, 0, byteData.Length)
postStream.Flush()
postStream.Dispose()
Run Code Online (Sandbox Code Playgroud)
if-then的主体不返回任何内容,但我不知道如何使其更具功能性(如果可能的话).我不知道最小化命令式代码的正确技巧.考虑到F#的性质,直接运输我的C#相当容易,但是我很难将其转换为功能.每次我在C#中使用if语句,并且我正在尝试将其传输到F#时,我感到气馁,因为我无法想到一种方法来使代码更具功能性.