IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 第五课作业 -> 正文阅读

[移动开发]第五课作业

作者:treeSkill
import Iter "mo:base/Iter";
import List "mo:base/List";
import Principal "mo:base/Principal";
import Time "mo:base/Time";
import Buffer "mo:base/Buffer";
import Array "mo:base/Array";
import Int "mo:base/Int";

actor {
    public type Message = {
        text: Text;
        time: Time.Time;//该时间为从1970-01-01到现在经历的秒数
        author: Text;
    };

    public type FollowInfo = {
        name: Text;
        id : Text;
    };

    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 authors: ?Text = null;
    public shared func set_name(text2: Text) : async () {
        authors := ?text2;
    };

    public query func get_name() : async ?Text {
        authors
    };

    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 [FollowInfo] {
        var all : List.List<FollowInfo> = List.nil();

        for(id in Iter.fromList(followed)){
            ignore do ? {
                let canister : Microblog = actor(Principal.toText(id));
                let name = (await canister.get_name()) !;
                let tmp : FollowInfo = {name = name;id =Principal.toText(id)};
                all := List.push<FollowInfo>(tmp, all);

            }
        };
        return List.toArray(all);
    }; 

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

    public shared func post(otp:Text, text1: Text) : async () {
        assert(otp == "123456");
        let _author = switch (auth) {
            case (?a) { a };
            case (null) { "" };
        };

        let message1 = {
            text = text1;
            time = Time.now();
            author=_author;
        };
        
        messages := List.push(message1,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);
    };
};

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-01-24 11:01:03  更:2022-01-24 11:01:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 13:00:20-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码