第五课作业:IC开发入门第一期

import List "mo:base/List";
import Iter "mo:base/Iter";
import Principal "mo:base/Principal";
import Time "mo:base/Time";
actor {

    //作业要求的添加authot字段
    public type Message = {
        content : Text;
        time : Time.Time;
        author : Text;
    };

    var a : Text = "prince";

    public type Microblog = actor{
        follow: shared(Principal) -> async ();
        follows: shared query () -> async [Principal];
        post: shared (Text,Text) -> async ();
        posts: shared query () -> async [Message];
        timeline : shared () -> async [Message];

        set_name: shared (Text) -> async ();
        get_name: shared query () -> async ?Text;
    };

    var followed : List.List<Principal> = List.nil();

    public shared func follow(id: Principal) : async () {
        followed := List.push(id,followed);
    };

    public shared query func follows() : async [Principal] {
        List.toArray(followed)
    };

    var messages : List.List<Message> = List.nil();
    

    public shared func post(opt : Text , text : Text) : async () {
        assert(opt == "123456");
        let mesg : Message = {
            content = text;
            time = Time.now();
            author = a ;
        };
        messages := List.push(mesg, messages);
    };


    public shared query func posts() : async [Message] { 
        List.toArray(messages)
    };


    public shared func timeline() : async [Message] {
        var all : List.List<Message> = List.nil();
        for(id in Iter.fromList(followed)){
            let canister :Microblog = actor(Principal.toText(id));
            let msgs = await canister.posts();
            for (msg in Iter.fromArray(msgs)){
                all := List.push(msg,all);
            };
        };
        List.toArray(all)
    };
    //作业要求的添加set_name公共方法
    public shared func set_name(name : Text){
        a := name;
    };
    //作业要求的添加get_name公共方法
    public shared func get_name() : async ?Text{
        return ?a;
    }

};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值