假设我有两个信使对象,可以发送和接收消息。当接收到消息时,它被附加到某个文件:
class Messenger:
def sendMessage(anotherMessenger, message):
anotherMessenger.receiveMessage(message)
def receiveMessage(msg):
# appending msg to file
a = Messenger()
b = Messenger()
a.sendMessage(b, "Hello b!")
b.sendMessage(a, "Hi a!")什么是与上面的程序等效的函数式编程?
发布于 2019-02-27 04:04:34
在FP中,你的“对象”往往是函数。在这种情况下,您可以使用多个函数来处理不同的场景,而不是使用多个对象,每个对象都有两个成员函数。
在这种情况下,您需要:
receiveMessage: string -> ()也就是说,receiveMessage是一个接受string并不返回任何内容的函数- unit。同样:
sendMessage: (f: string -> ()) -> (msg: string) -> ()也就是说,sendMessage接受一个receiveMessage实现和一个string,并返回unit。
因此,使用像F#这样的语言,我们可以得到以下结果:
let sendMessage (f: string -> ()) (msg: string) = f(msg)
let aRecv (msg: string) = // Do something with msg
let bRecv (msg: string) = // Do something else with msg
...
sendMessage bRecv "Hello b!"
sendMessage aRecv "Hi a!"
...由于你的问题是泛型的,我将把它作为一种泛型答案。如果你有更具体的想法,这个答案可以扩展一下。
https://stackoverflow.com/questions/54850613
复制相似问题