case class Developer
(id
: Int, name
: String, email
: String
) { def rates
(p
: Project
) = Rating
(this, p,
0) }
case class Project
(uid
: String, ratings
: List
[Rating
]) case class Rating
(dev
: Developer, proj
: Project, rating
: Int
) { def by
(stars
: Int
) = Rating
(dev, proj, stars
) def line
= s
"${dev.name} gave ${proj.uid} $rating stars" }
val rodolfo
= Developer
(1,
"John",
"john@example.com") val jquery
= Project
("jquery/jquery", Nil
) val rating
= rodolfo rates jquery by
5
println(rating.line)
}
Y2FzZSBjbGFzcyBEZXZlbG9wZXIoaWQ6IEludCwgbmFtZTogU3RyaW5nLCBlbWFpbDogU3RyaW5nKSB7CiAgZGVmIHJhdGVzKHA6IFByb2plY3QpID0gUmF0aW5nKHRoaXMsIHAsIDApCn0KY2FzZSBjbGFzcyBQcm9qZWN0KHVpZDogU3RyaW5nLCByYXRpbmdzOiBMaXN0W1JhdGluZ10pCmNhc2UgY2xhc3MgUmF0aW5nKGRldjogRGV2ZWxvcGVyLCBwcm9qOiBQcm9qZWN0LCByYXRpbmc6IEludCkgewogIGRlZiBieShzdGFyczogSW50KSA9IFJhdGluZyhkZXYsIHByb2osIHN0YXJzKQogIGRlZiBsaW5lID0gcyIke2Rldi5uYW1lfSBnYXZlICR7cHJvai51aWR9ICRyYXRpbmcgc3RhcnMiCn0KCm9iamVjdCBNYWluIGV4dGVuZHMgQXBwIHsKICB2YWwgcm9kb2xmbyA9IERldmVsb3BlcigxLCAiSm9obiIsICJqb2huQGV4YW1wbGUuY29tIikKICB2YWwganF1ZXJ5ID0gUHJvamVjdCgianF1ZXJ5L2pxdWVyeSIsIE5pbCkKICB2YWwgcmF0aW5nID0gcm9kb2xmbyByYXRlcyBqcXVlcnkgYnkgNQogIAogIHByaW50bG4ocmF0aW5nLmxpbmUpCn0=