致读者

本文是《一个 JSer 的 Dart 学习日志》系列的第六篇,本系列文章次要以开掘 JS 与 Dart 异同点的形式,在温习和坚固 JS 的同时安稳地过渡到 Dart 语言。
如无非凡阐明,本文中 JS 蕴含了自 ES5 至 ES2021 的全副个性, Dart 版本则为 2.0 以上版本。
鉴于作者尚属 Dart 初学者,所以意识可能会比拟浮浅和全面,对常识的概括不免有所疏漏,如您慧眼识虫,望不吝指正。本系列文章首发于思否平台,尽管没有限度其余平台转载,然而勘误及新增内容仅限于思否,如您是在别的中央看到本文,请移步思否,免得看到未订正的内容。

对于

自本系列挖坑以来,上次填坑曾经是去年的事件了,诚实说 Dart 曾经忘得十分洁净了。
所以依照之前挖坑的进度,本篇理当学习下 Dart 的数据汇合形式 Map 或 List,然而长期想把原来学习过的货色坚固一下,所以先造个货色试试。

向量的实现(JS && Dart)

1. class 申明

应用数组/列表存储向量的值,这样做的益处是向量能够是任意多个维度。
  • JS:

    class Vector{  #values = [];  constructor(values = []){      this.#values = values.map(item => +item);  }}
  • Dart:

    class Vector{  List<double> _values;  const Vector(this._values);}

2. 向量转数组/列表

将向量变成一个数组/列表。
  • JS:

    getValues(){  return this.#values.map(item => item);}
  • Dart:

    List<double> getValues(){  return _values.map((item) => item).toList();}

3. 读取指定维度的值

维度在这里其实是一个序号,也就是数组/列表的下标。
  • JS:

    getVal(index = 0){  return this.#values[index];}
  • Dart

    double getVal([int index = 0]){  return _values[index];}

4. 向量相加

两个等长向量相加,失去一个新的向量。
  • JS:

    add(obj){  const objVals = obj.getValues();  return this.#values.map((item, index) => item + objVals[index]);}
  • Dart:

    Vector operator +(Vector obj){  final objVals = obj.getValues();  int cnt = 0;  return _values.map(      (item) => item + objVals[cnt++]  ).toList();}
向量的减法就是换个符号的事件,所以就省略了。