WorkSpace 에서 끄적거리기 두번째....
housekeepingbook := OrderedCollection new.
housekeepingbook
add: #('복권' -5000 '2005-09-21') asOrderedCollection;
add: #('복권당첨' 50000 '2006-09-21') asOrderedCollection;
add: #('두부' -500 '2006-09-22') asOrderedCollection;
add: #('피자' -15000 '2006-09-23') asOrderedCollection;
add: #('보너스' 100000 '2004-09-24') asOrderedCollection;
add: #('화장지' -7000 '2006-09-24') asOrderedCollection;
add: #('전기세' -25000 '2006-09-24') asOrderedCollection;
add: #('키보드' -15000 '2005-09-25') asOrderedCollection;
add: #('화장품' -55000 '2006-09-25') asOrderedCollection;
add: #('전구' -500 '2004-09-26') asOrderedCollection.
"1.housekeepingbook의 3번째 원소를 Date객체로 바꾸기"
housekeepingbook do: [:each | each at: 3 put: (Date fromString: (each at: 3))].
"2.2004년 항목만 추출"
housekeepingbook select: [:each | (each at: 3) year = 2004].
"3.2004년의 금액 합계"
(housekeepingbook select: [:each | (each at: 3) year = 2004]) inject: 0 into: [:sum :item| sum + (item at: 2) ].
"4.각 항목들의 요일"
housekeepingbook collect: [:each | (each at: 3) weekday].
"5.category 객체 생성 & 전기세의 항목 이름"
categories := OrderedCollection new.
categories
add: #('두부' '피자' '김치') -> '식료품';
add: #('복권' '복권당첨' '적금') -> '투자';
add: #('월급' '보너스') -> '급여';
add: #('전기세' '수도세') -> '생활요금';
add: #('화장지' '키보드' '화장품' '전구') -> '소모품'.
(categories detect: [:each | each key includes: '전기세']) value.
"6.각 항목의 분류"
housekeepingbook collect: [:item | (categories detect: [:each | each key includes: (item at: 1) ]) value].
"7.소모품으로 분류되는 항목의 합"
(housekeepingbook select: [:each | (categories detect: [:cat | cat value = '소모품']) key includes: (each at: 1) ])
inject: 0 into: [:sum :item | sum + (item at: 2)].
"8.2006년의 소모품의 합"
((housekeepingbook select: [:each | (categories detect: [:cat | cat value = '소모품']) key includes: (each at: 1) ])
select: [:each | (each at: 3) year = 2006]) inject: 0 into: [:sum :item | sum + (item at: 2) ].
"9.원금"
pocketMoney := 4000000.
housekeepingbook inject: pocketMoney into: [:sum :item | sum + (item at: 2) ].
'Programing > Smalltalk' 카테고리의 다른 글
가계부 만들기 - 04 (0) | 2006.10.08 |
---|---|
가계부 만들기 - 03 (0) | 2006.10.08 |
가계부 만들기 - 01 (0) | 2006.10.08 |
변수와 메세지 그리고 이벤트... (0) | 2006.05.15 |
재밌다... (0) | 2006.05.07 |