aboutsummaryrefslogtreecommitdiff
path: root/samples/Kotlin
diff options
context:
space:
mode:
authorJoshua Peek <josh@joshpeek.com>2012-07-23 15:52:49 -0500
committerJoshua Peek <josh@joshpeek.com>2012-07-23 15:52:49 -0500
commit7b6caa0f6c7603aabb5e6ed657e24aaddbeafc78 (patch)
treeec0522eae75bb04ae73d28ae3f599682a2bfdaeb /samples/Kotlin
parent314f0e485227915931db361be14d308a210bedea (diff)
Rename samples subdirectories
Diffstat (limited to 'samples/Kotlin')
-rw-r--r--samples/Kotlin/Foo.kt47
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