實現的功能是:購物車小票效果,效果圖如下:
分析要實現以上的購物車小票示例需要準備什麼?
為了用到已學習的繼承知識,定義乙個meta
中間類存放商品的:名稱、**
class meta
再定義商品類good
,繼承了meta
類,並新增了count(數量)
的字段
class good extends meta
有了商品資訊,以及商品金額計算的方法,下面來定義購物車類
在購物車類中我們需要
因此購物車**如下:
//定義購物車類
class shoppingcart extends meta with printhelper ) : this.withcode(name: name, code: null);
// 有購物者及優惠碼的建構函式
shoppingcart.withcode() : date = datetime.now(), super(name, 0);
// 格式化輸出
getinfo() =>
'''購物車資訊:
----------------
商品名 單價 數量 總價
----------------
$ $ $ $').join('\n')}
***************=
使用者名稱: $name
優惠碼: $
總價: $price
日期: $date
''';
}
上面的**都好理解,有點難度的是在計算商品總價是使用了dart
中的運算子過載功能。也可以不用運算子過載,直接在shoppingcart
中定義乙個計算所有商品總價的方法,遍歷所有商品的**並計算即可。
既然dart
提供了運算子過載功能,那麼我們就得用起來啊。
首先在需要在good
類中過載+
號運算子
good operator +(good item) => good(name + item.name, price * count + (item.price * item.count), 1);
// 結果就是把兩個 good 物件合併為乙個。新 good 物件的 name = name + item.name,price = price * count + (item.price * item.count) 。
然後在計算商品總價的時候可以使用
// reduce 函式是將陣列中的每乙個值與前面返回的值相加,最後返回相加的總和
double get price => bookings.reduce((item, itemtotalprice) => (item+ itemtotalprice)).price;
list[0...n].reduce(f)相當於就是:
a0 = list[0]
a1 = f(a0,list[1])
a2 = f(a1,list[2])
an = f(an-1,list[n])
reduce(f) 中的 f 是求和函式 f(x,y)=x+y,可以理解成 an=list[0]+list[1]+list[n-1]+list[n]
購物車類shoppingcart
繼承了meta
並實現了printhelper
類,meta
類我們已經實現了,下面來定義printhelper
類
mixin printhelper
以上就是購物車 demo 的實現。 Dart 基礎篇(二) 基礎知識
語法 main 與其他語言一致,分為單行注釋和多行注釋。在dart語言中,定義變數有三種方式 只能使用一種方式來定義,不能同時使用兩種方式定義乙個變數。通過關鍵字var可以宣告任何型別的變數,dart具有變數型別推斷的能力,乙個變數一旦被初始化,那麼這個變數的型別就確定了,就是這個初始化值的型別!v...
dart引數傳方法 dart語言基礎知識
一 dart入口方法介紹dart列印dart注釋 dart變數 常量 命名規則 main print hello world function set void dart是個強大的指令碼類語言,可以不預先定義變數型別,自動會i型別變數 dart 中定義變數可以通過var關鍵字可以通過型別來申明變數 ...
Dart語言學習一 基礎知識 語法學習
1 變數名字必須有數字 字母 下劃線或美元符號 組成。2 變數名字不能以數字開頭。3 變數不能為保留字或者是關鍵字。4 變數名稱區分大小寫,age和age是不同的變數。5 建議使用駝峰命名法。dart中只有int 和 double 兩種數值型資料,他們的父類是num。int a 100 double...