File tree Expand file tree Collapse file tree 6 files changed +58
-46
lines changed
Expand file tree Collapse file tree 6 files changed +58
-46
lines changed Original file line number Diff line number Diff line change @@ -44,9 +44,9 @@ function Dictionary:Remove(key)
4444end
4545
4646function Dictionary :Clear ()
47- for _ , key in ipairs ( self .m_index ) do
48- self : Remove ( key )
49- end
47+ self .m_count = 0
48+ self . m_dict = {}
49+ self . m_index = {}
5050end
5151
5252--- @return number
Original file line number Diff line number Diff line change 11---- ---------------ModuleInfo-------------------
22--- Author : jxy
33--- Date : 2020/02/16 00:00
4- --- Description : 数组封装类,可以用lua迭代器访问
4+ --- Description : 数组封装类
55--- https://github.com/JomiXedYu/JxCode.LuaSharp
66---- --------------------------------------------
77--- @class SysLib.Collections.List : SysLib.Object
@@ -21,8 +21,8 @@ function List:Add(item)
2121 self .m_arr [self .m_count ] = item
2222end
2323
24- function List :AddRange (ienumerator )
25- for item in each (ienumerator ) do
24+ function List :AddRange (enumerable )
25+ for item in each (enumerable ) do
2626 self :Add (item )
2727 end
2828end
@@ -49,6 +49,7 @@ function List:Clear()
4949 for i = 1 , self .m_count do
5050 self .m_arr [i ] = nil
5151 end
52+ self .m_count = 0
5253end
5354
5455--- @return boolean
Original file line number Diff line number Diff line change @@ -42,3 +42,4 @@ assert(e3 == 6)
4242dict :Remove (" user2" )
4343assert (dict :GetCount () == 2 )
4444dict :Clear ()
45+ assert (dict :GetCount () == 0 )
Original file line number Diff line number Diff line change 11
22local list = List .New ()
3- list :Add (" item1 " )
4- list :Add (" item2 " )
3+ list :Add (" i1 " )
4+ list :Add (" i2 " )
55list :Add (nil )
6- list :Add (" item3" )
7-
8- assert (list :GetCount () == 4 )
6+ list :AddTableRange ({" i3" , " i4" })
7+ assert (list :GetCount () == 5 )
98
109-- 可以使用三种遍历方式
1110
1211-- 1.ForEach方法
13- Console . WriteLine ( " ForEachMemberFunction: " )
12+ local it1 = " "
1413list :ForEach (function (item )
15- Console .WriteLine (item )
14+ if not item then
15+ it1 = it1 .. " nil"
16+ else
17+ it1 = it1 .. item
18+ end
1619end )
20+ assert (it1 == " i1i2nili3i4" )
1721
1822-- 2.迭代器
19- Console . WriteLine ( " Enumerator: " )
23+ local it2 = " "
2024for index , value in list :GetEnumerator () do
21- Console .WriteLine (value )
25+ if not value then
26+ it2 = it2 .. " nil"
27+ else
28+ it2 = it2 .. value
29+ end
2230end
31+ assert (it2 == " i1i2nili3i4" )
2332
2433-- 3.或者使用each
25- Console . WriteLine ( " Each: " )
34+ local it3 = " "
2635for index , value in each (list ) do
27- Console .WriteLine (value )
36+ if not value then
37+ it3 = it3 .. " nil"
38+ else
39+ it3 = it3 .. value
40+ end
2841end
42+ assert (it3 == " i1i2nili3i4" )
2943
30- Console .WriteLine (" item2 IndexOf:" , list :IndexOf (" item2" )) -- 2
31- Console .WriteLine (" item4 IndexOf:" , list :IndexOf (" item4" )) -- -1
44+ assert (list :IndexOf (" i2" ) == 2 )
45+ assert (list :IndexOf (" i4" ) == 5 )
46+ assert (list :IndexOf (" i5" ) == - 1 )
3247
33- -- 使用GetCount或#获得数量
3448list :RemoveAt (2 )
35- Console .WriteLine (" RemoveAt:" , list :GetCount ())
36- list :Clear ()
49+ assert (list :GetCount () == 4 )
50+ list :Clear ()
51+ assert (list :GetCount () == 0 )
Original file line number Diff line number Diff line change 11local queue = Queue .New ()
22
3- queue :Enqueue (" value1" )
4- queue :Enqueue (" value2" )
5- queue :Enqueue (" value3" )
3+ queue :Enqueue (" v1" )
4+ queue :Enqueue (" v2" )
65
7- Console . WriteLine ( " Count: " , queue :GetCount ())
6+ assert ( queue :GetCount () == 2 )
87
8+ local it = " "
99queue :ForEach (function (item )
10- Console . WriteLine ( " item: " , item )
10+ it = it .. item
1111end )
1212
13- Console . WriteLine ( " Peek: " , queue : Peek () )
13+ assert ( it == " v1v2 " )
1414
15- Console . WriteLine ( " Dequeue: " , queue :Dequeue () )
16- Console . WriteLine ( " Dequeue: " , queue :Dequeue ())
17-
18- Console . WriteLine ( " Count: " , queue :GetCount ())
15+ assert ( queue :Peek () == " v1 " )
16+ assert ( queue :Dequeue () == " v1 " )
17+ assert ( queue : Peek () == " v2 " )
18+ assert ( queue :GetCount () == 1 )
1919
2020queue :Clear ()
21- Console . WriteLine ( " Clear: " , queue :GetCount ())
21+ assert ( queue :GetCount () == 0 )
Original file line number Diff line number Diff line change 11local stack = Stack .New ()
22
3- stack :Push (" one" )
4- stack :Push (" two" )
5- stack :Push (" three" )
3+ stack :Push (" v1" )
4+ stack :Push (" v2" )
65
6+ assert (stack :GetCount () == 2 )
77
8- Console .WriteLine (" Count:" , stack :GetCount ())
9-
10- Console .WriteLine (" Peek:" , stack :Peek ())
11-
12- Console .WriteLine (" Pop:" , stack :Pop ())
13- Console .WriteLine (" Pop:" , stack :Pop ())
14-
15- Console .WriteLine (" Count:" , stack :GetCount ())
8+ assert (stack :Peek () == " v2" )
9+ assert (stack :Pop () == " v2" )
10+ assert (stack :Peek () == " v1" )
11+ assert (stack :GetCount () == 1 )
1612
1713stack :Clear ()
18-
19- Console .WriteLine (" Clear:" , stack :GetCount ())
14+ assert (stack :GetCount () == 0 )
You can’t perform that action at this time.
0 commit comments