0
点赞
收藏
分享

微信扫一扫

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

天蓝Sea 2022-01-24 阅读 55
开发语言
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 条评论