DFINITY学习系列 - Motoko源码细读:List篇(1)

声明类型的方法, 可以声明一个?类型:

public type List<T> = ?(T, List<T>);

创建一个空List :

 public func nil<T>() : List<T> = null;

使用 :

private var nilList = List.nil<Nat>();
private var nilList : List.List<Nat> = List.nil<Nat>();

判断一个List是否为空:
使用 :

var isNil = List.isNil(list_name);
public func isNil<T>(l : List<T>) : Bool {
      switch l {
      case null { true  };
      case _    { false };
      }
    };

switch判断,null即空,非null就返回非空false

通过放入一个值得方式创建一个List: push
使用

 var list = List.push<Nat>(nat, list);
public func push<T>(x : T, l : List<T>) : List<T> = ?(x, l);

没懂这种函数的写法<<<<<<<<<

得到list的最后一个元素 : 返回一个?T类型
用法 :

var nat = List.last<Nat>(list_name);
public func last<T>(l : List<T>) : ?T {
    switch l {
    case nfull        { null };
    case (?(x,null)) { ?x };
    case (?(_,t))    { last<T>(t) };
    }
  };

//源码解读
last方法通过递归的方式进行循环往复地求最后一个元素。
判断方法为,如果无元素,就返回null;
如果有元素: 如果是?(x,null)类型,表示已经到了最后,就返回?x
如果有元素,且有下个元素,表示没到最后,就继续地柜
case(?(_, t) 表示在有下一个元素的情况下,不管本值为任意值,继续向下递归

//猜想
递归,每次递归的时候,返回的都是一个?(x, nextList) , x是当前列表的头元素,nextlist是下一个列表的指针。
每个列表的指针指向的为

?{
  element <T>
  nextList List.List<T>
}

即每一个列表的名字就是这个列表当前的元素和下一个?(元素)的结构体的指针。

//感悟 : 每个库的方法调用时都要加上 来表示返回的类型,否则库不知道返回什么类型。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLMap是一个用于自动化SQL注入的工具,它可以帮助安全测试人员发现和利用Web应用程序中的SQL注入漏洞。要在Windows 10上安装和使用SQLMap,可以按照以下步骤进行操作: 1. 首先,确保你已经安装了Python 2.7版本。如果没有安装,你可以从Python官方网站下载并安装它。 2. 下载SQLMap,可以从官方GitHub页面上获取到最新的SQLMap代码。 3. 解压缩下载的SQLMap文件,并将其放置在Python的安装目录中。 4. 打开命令提示符(CMD),导航到SQLMap所在的目录。 5. 使用以下命令启动SQLMap: ``` python sqlmap.py -h ``` 这将显示SQLMap的帮助信息,包含了可以使用的所有选项和参数。 请注意,在使用SQLMap之前,建议事先了解SQL注入的基本概念和相关技术,以确保你能够正确理解和使用SQLMap工具。同时,使用SQLMap进行安全测试时,务必获得合法的授权,并在符合法律法规的前提下进行测试。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Win10安装SQLMap及报错解决方案](https://blog.csdn.net/Motoko_Lake/article/details/106275510)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [sqlmap启动视频教程](https://download.csdn.net/download/weixin_42859280/10974196)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值