|
马上注册登陆,结交更多好友,享用更多功能,让你轻松玩转社区
您需要 登录 才可以下载或查看,没有账号?用户注册
x
学习目标Linux技术教程的相关资讯可以到我们网站了解一下,从专业角度出发为您解答相关问题,给您优质的服务!
分析 函数的源码
通过测试用例调试源码
学习 S 的使用场景
其它的可迭代对象
拉取源码
进入到 仓库下,使用 CS 克隆一份项目。
项目目录如图:
忽略掉一些配置文件,各个文件的功能如下:
是整个项目的入口,负责对外导出函数
是函数的TS类型描述文件
是测试用例
分析源码
函数可以接受一个值,并返回一个包含该值的数组,根据传入不同类型的值返回不同的结果。
() {
如果传入的值是 或 ,函数会返回一个空数组。
( === || === ) {
[];
}
如果传入的值本身就是一个数组,函数会直接返回这个数组
(AA()) {
;
}
如果传入的值是一个字符串,函数会返回一个包含该字符串的数组。
( === '') {
[];
}
如果传入的值是一个可迭代对象,函数会返回一个包含该对象所有元素的数组。
( [S] === '') {
[];
}
如果传入的值既不是 ,也不是一个数组字符串可迭代对象,函数会返回一个包含该值的数组。
[];
}
S 的使用场景
S 是 JS 中的一个内置 S,它用于定义一个对象的默认迭代器。当一个对象被用于 循环或者解构赋值时,会自动调用它的 S 方法。
举个例子,假设你有一个数组,你可以使用 S 方法来定义如何遍历这个数组:
= [1, 2, 3];
[S] = () {
= 0;
{
: () {
{
: [] + 1,
: ++ ===
};
}
};
};
( ) {
();
}
上面的代码定义了一个数组 ,并为它定义了一个 S 方法,这个方法返回一个迭代器对象,这个对象的 方法返回数组的下一个元素。然后我们使用 循环来遍历这个数组,循环会自动调用 的 S 方法来获取每个元素+1后的值。
上面代码执行的执行结果:
可见我们更改了 的默认迭代器。
具有默认的迭代器函数的对象
这些对象能够被 循环遍历
数组
字符串
M(M)
S(S)
总之,一个数据结构如果具有S属性,这个对象就可以被遍历它的成员。我们理解的原理可以更好使用提供的数据结构,必要时还可以改造不可迭代的数据结构。 |
|