6. Keep results together
Keep Counting.kalm from the previous lesson. Add a result record in
src/main/kalm/stats/Statistics.kalm:
Statistics.kalm
kalm
space stats
pub data Statistics(lines: Int, words: Int)Add src/main/kalm/stats/Summary.kalm:
Summary.kalm
kalm
space stats
pub fun summarize(lines: List<Text>) -> Statistics:
var words = 0
for line in lines:
words += countWords(line)
return Statistics(len(lines), words)Replace App.kalm:
App.kalm
kalm
space stats
pub fun main() -> Unit:
fix lines: List<Text> = ["a quiet", "morning"]
fix result = summarize(lines)
sayLine(@"${result.lines()} lines / ${result.words()} words")A data declaration becomes an immutable Java record. Components are available
through accessor methods. An empty list yields zero lines and zero words.
Terminal
kalm run
Text
2 lines / 3 wordsRead types and contracts for other ways to model data.