gpt4 book ai didi

functional-programming - Erlang(函数式编程)vs 面向对象编程的思维方式

转载 作者:行者123 更新时间:2023-12-03 23:50:15 27 4
gpt4 key购买 nike

我正在学习 Erlang,我正在尝试创建一个非常示例的博客程序。然而我目前的想法是 困在OO世界 (var p = new Post(); p.Title = ""; p.Save();)。我想了解一下 Erlang 的一些基本思想。我应该在数据结构(p.Title、p.DateCreated、p.Body)方面做些什么,而不是创建 Post 对象?我应该使用元组吗?我想了解做这些事情的推荐方式(在特定于 Erlang 和或特定于函数式编程中)。还是我在 Erlang 或 FP 中做的根本错误?

要求(在 OO 术语中,不确定如何用 FP 术语解释 ^_^):

  • 创建 Post 对象(id、title、date_created、body、IList)
  • 创建评论对象 (id, post_id, created_by (name as string), date_created)
  • 一个帖子可以有多个评论
  • post.AddComment(评论)

  • 谢谢。

    更新:
    我不是在寻找在 Erlang 中执行 OOP 的特定方式,除非这是推荐的方式。我正在寻找执行问题中描述的标准/推荐方式,但是我不想在 Erlang 中复制 OOP。

    最佳答案

    我会使用记录:

    -record(post, {title, date_created, body, comments = []}).
    -record(comment, {created_by, date_created, content}).

    然后如果你想使用 mnesia 作为数据库:
    Post = #post{title = "", body = "", date_created = erlang:universaltime()},
    mnesia:transaction(fun() -> mnesia:write(Post) end).

    添加评论:
    Comment = #comment{created_by = "", content = "", date_created = erlang:universaltime()},
    mnesia:transaction(fun() ->
    [Post] = mnesia:read(post, Title),
    PostWithNewComment = Post#post{comments = [Comment | Post#post.comments]},
    mnesia:write(PostWithNewComment)
    end).

    我还没有测试代码,但这就是我要做的。我还假设每个标题都是独一无二的。

    关于functional-programming - Erlang(函数式编程)vs 面向对象编程的思维方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1817904/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com