diff options
| author | Joshua Peek <josh@joshpeek.com> | 2012-07-23 15:52:49 -0500 |
|---|---|---|
| committer | Joshua Peek <josh@joshpeek.com> | 2012-07-23 15:52:49 -0500 |
| commit | 7b6caa0f6c7603aabb5e6ed657e24aaddbeafc78 (patch) | |
| tree | ec0522eae75bb04ae73d28ae3f599682a2bfdaeb /samples/Kotlin | |
| parent | 314f0e485227915931db361be14d308a210bedea (diff) | |
Rename samples subdirectories
Diffstat (limited to 'samples/Kotlin')
| -rw-r--r-- | samples/Kotlin/Foo.kt | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/samples/Kotlin/Foo.kt b/samples/Kotlin/Foo.kt new file mode 100644 index 0000000..5929133 --- /dev/null +++ b/samples/Kotlin/Foo.kt @@ -0,0 +1,47 @@ +package addressbook + +class Contact( + val name : String, + val emails : List<EmailAddress>, + val addresses : List<PostalAddress>, + val phonenums : List<PhoneNumber> +) + +class EmailAddress( + val user : String, + val host : String +) + +class PostalAddress( + val streetAddress : String, + val city : String, + val zip : String, + val state : USState?, + val country : Country +) { + assert {(state == null) xor (country == Countries["US"]) } +} + +class PhoneNumber( + val country : Country, + val areaCode : Int, + val number : Long +) + +object Countries { + fun get(id : CountryID) : Country = countryTable[id] + + private var table : Map<String, Country>? = null + private val countryTable : Map<String, Country> + get() { + if (table == null) { + table = HashMap() + for (line in TextFile("countries.txt").lines(stripWhiteSpace = true)) { + table[line] = Country(line) + } + } + return table + } +} + +class Country(val name : String)
\ No newline at end of file |
