首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >函数风格的sendMessage

函数风格的sendMessage
EN

Stack Overflow用户
提问于 2019-02-24 17:43:59
回答 1查看 46关注 0票数 0

假设我有两个信使对象,可以发送和接收消息。当接收到消息时,它被附加到某个文件:

代码语言:javascript
复制
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!")

什么是与上面的程序等效的函数式编程?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-27 04:04:34

在FP中,你的“对象”往往是函数。在这种情况下,您可以使用多个函数来处理不同的场景,而不是使用多个对象,每个对象都有两个成员函数。

在这种情况下,您需要:

代码语言:javascript
复制
receiveMessage: string -> ()

也就是说,receiveMessage是一个接受string并不返回任何内容的函数- unit。同样:

代码语言:javascript
复制
sendMessage: (f: string -> ()) -> (msg: string) -> ()

也就是说,sendMessage接受一个receiveMessage实现和一个string,并返回unit

因此,使用像F#这样的语言,我们可以得到以下结果:

代码语言:javascript
复制
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!"
...

由于你的问题是泛型的,我将把它作为一种泛型答案。如果你有更具体的想法,这个答案可以扩展一下。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54850613

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档