Home Segments Index Top Previous Next

481: Mainline

Thus, the following version of eatOnlyVegetables extracts name and calorie information for the vegetables found in the foods.dta file. Then, eatOnlyVegetables creates Food instances for those vegetables, and adds those Food instances to an ordered collection. That ordered collection is the answer produced by eatOnlyVegetables:

Food method definition • class 
eatOnlyVegetables: aFile 
  |inputStream collection string stream | 
  inputStream := File pathName: aFile. 
  collection := OrderedCollection new. 
  [inputStream atEnd] 
    whileFalse: 
      [(string := inputStream nextLine) notEmpty 
       ifTrue: 
         [(string at: 1) = $V 
            ifTrue: [stream := string asStream. 
                     stream nextWord. 
                     collection add:  
                       (Food new name: stream nextWord; 
                         fCalories: stream nextWord asInteger; 
                         cCalories: stream nextWord asInteger; 
                         pCalories: stream nextWord asInteger)]]]. 
  inputStream close. 
  ^ collection 
Workspace
(Food eatOnlyVegetables: 'c:\test\foods.dta') 
  do: [ :element | Transcript show: element name printString; cr]. 
Transcript 
'Broccoli' 
'Carrots' 
'Corn' 
'Cabbage'