Skip to content

Instantly share code, notes, and snippets.

@pfleidi
Created May 18, 2010 12:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pfleidi/404917 to your computer and use it in GitHub Desktop.
Save pfleidi/404917 to your computer and use it in GitHub Desktop.
trait Similarity {
def isSimilar(x: Any): Boolean
def isNotSimilar(x: Any): Boolean = !isSimilar(x)
}
class TestClass(val member: Boolean) extends Similarity {
// method implementation with cast
def isSimilar(x: Any) = { x.asInstanceOf[TestClass].member == member }
}
object TraitTest {
def testSimilarity(arg0: Similarity, arg1: Similarity) {
println(arg0.isSimilar(arg1))
}
}
object MainApp extends Application {
TraitTest.testSimilarity(
new TestClass(true), new TestClass(false) // false
)
TraitTest.testSimilarity(
new TestClass(true), new TestClass(true) // true
)
}
@pfleidi
Copy link
Author

pfleidi commented May 18, 2010

A small example to show how traits work as a polymorphic type in scala:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment