作者回复: 代码还是要分开放的,因为每节分享都是独立的一个可运行工程,不只是代码,还有CI和单测一堆工程相关的东西,集中放就没法管理了。
我单起了一个仓库,用submodule的方式把这些demo都收进去了,可以自取
https://github.com/cyndibaby905/flutter_core_demo
作者回复: operator+:把两个Item对象合并为一个。新Item对象的name为这两个对象的name拼接而成,price为他们的price相加而成。
get price:对列表数据采用累加的方式进行求和。这里用到了reduce方法。reduce是函数迭代方法,需要传递一个二元函数进行列表的合并工作。list[0...n].reduce(f)等于:
a0 = list[0]
a1 = f(a0,list[1])
a2 = f(a1,list[2])
an = f(an-1,list[n])
在这里我们的f是求和函数f(x,y)=x+y,可以理解成an=list[0]+list[1]+list[n-1]+list[n]
作者回复: 感谢提醒
作者回复: 类的实例变量:1.是声明时定义的,可以用this语法糖赋值;2.是继承来的,不能用this,需要把这个值交给super让父类赋值
作者回复: 赞👍
不过数量作为Item的属性会更好一点。
作者回复: 给你展开一下你就明白了:
funcThatThrows()
.then(successCallback, onError: (e) {
handleError(e); // Original error.
anotherFuncThatThrows(); // new error.
})
.catchError(handleError); // Error from within then() handled.
作者回复: 非常棒!
作者回复: 结果倒是对,但是这个购物车与我们理解的购物车还是有差异:
1.count属性应该是Item对象的:一个Item对象有count个,而不是一直往购物车内加同样的对象count次;
2.由于你的count属性无法拆分到Item类,导致getGoodsInfo的计算异常繁琐了。如果count属性在Item类,getGoodsInfo计算可以收敛到Item对象类内部。
作者回复: 把dart命令所在的目录设置成环境变量PATH
作者回复: 赞
作者回复: 赞
作者回复: 你这段代码没计算数量啊
作者回复: 这只是一个加号运算符,最后bookings变为1还需要使用reduce来做迭代累计额
作者回复: 赞👍
作者回复: 计算价格的时候,商品单价要乘以数量;商品合并的时候,数量要置为1
作者回复: 会有的