# HG changeset patch # User The Geek Inside # Date 1289972548 21600 # Node ID 455359276087ccad452c44da30c039dbaad1fefb # Parent dfc82beb5b10bbe7101bf6194e92cace5a9f11d5 Traits example diff -r dfc82beb5b10bbe7101bf6194e92cace5a9f11d5 -r 455359276087ccad452c44da30c039dbaad1fefb .idea/misc.xml --- a/.idea/misc.xml Tue Nov 16 20:43:03 2010 -0600 +++ b/.idea/misc.xml Tue Nov 16 23:42:28 2010 -0600 @@ -24,6 +24,7 @@ + diff -r dfc82beb5b10bbe7101bf6194e92cace5a9f11d5 -r 455359276087ccad452c44da30c039dbaad1fefb .idea/modules.xml --- a/.idea/modules.xml Tue Nov 16 20:43:03 2010 -0600 +++ b/.idea/modules.xml Tue Nov 16 23:42:28 2010 -0600 @@ -4,8 +4,8 @@ - + diff -r dfc82beb5b10bbe7101bf6194e92cace5a9f11d5 -r 455359276087ccad452c44da30c039dbaad1fefb Topics/Actors/Actors.iml --- a/Topics/Actors/Actors.iml Tue Nov 16 20:43:03 2010 -0600 +++ b/Topics/Actors/Actors.iml Tue Nov 16 23:42:28 2010 -0600 @@ -21,9 +21,6 @@ - - - diff -r dfc82beb5b10bbe7101bf6194e92cace5a9f11d5 -r 455359276087ccad452c44da30c039dbaad1fefb Topics/Classes/Classes.iml --- a/Topics/Classes/Classes.iml Tue Nov 16 20:43:03 2010 -0600 +++ b/Topics/Classes/Classes.iml Tue Nov 16 23:42:28 2010 -0600 @@ -21,9 +21,6 @@ - - - diff -r dfc82beb5b10bbe7101bf6194e92cace5a9f11d5 -r 455359276087ccad452c44da30c039dbaad1fefb Topics/Classes/src/main/scala/net/thegeekinside/scala/talk/intro/Driver.scala --- a/Topics/Classes/src/main/scala/net/thegeekinside/scala/talk/intro/Driver.scala Tue Nov 16 20:43:03 2010 -0600 +++ b/Topics/Classes/src/main/scala/net/thegeekinside/scala/talk/intro/Driver.scala Tue Nov 16 23:42:28 2010 -0600 @@ -6,7 +6,9 @@ class Driver(override val name: String, override val lastName: String, experience: Int) extends Person(name, lastName) { println("-- This driver have " + experience + " years of experience -- ") - Driver.count = Driver.count + 1 + import Driver.count // Import count from companion object + + count = count + 1 override def toString = name + " " + lastName } diff -r dfc82beb5b10bbe7101bf6194e92cace5a9f11d5 -r 455359276087ccad452c44da30c039dbaad1fefb Topics/Functions and Closures/Functions and Closures.iml --- a/Topics/Functions and Closures/Functions and Closures.iml Tue Nov 16 20:43:03 2010 -0600 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,30 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff -r dfc82beb5b10bbe7101bf6194e92cace5a9f11d5 -r 455359276087ccad452c44da30c039dbaad1fefb Topics/Functions and Closures/pom.xml --- a/Topics/Functions and Closures/pom.xml Tue Nov 16 20:43:03 2010 -0600 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,22 +0,0 @@ - - 4.0.0 - - net.thegeekinside.scala.talk.intro - Closures - 1.0 - jar - - Closures - http://maven.apache.org - - - net.thegeekinside.scala.talk.intro - Topics - 1.0 - - - - - - \ No newline at end of file diff -r dfc82beb5b10bbe7101bf6194e92cace5a9f11d5 -r 455359276087ccad452c44da30c039dbaad1fefb Topics/Functions and Closures/src/main/scala/net/thegeekinside/scala/talk/intro/Main.scala --- a/Topics/Functions and Closures/src/main/scala/net/thegeekinside/scala/talk/intro/Main.scala Tue Nov 16 20:43:03 2010 -0600 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,60 +0,0 @@ -package net.thegeekinside.scala.talk.intro - -/** - * Main entry point. - */ - -object Main { - def main(args: Array[String]) { - shortFormFunc(args) - - partialAppliedFunc(args) - - internalFuncAndClosures(args) - - repeatedParameters(args: _*) - } - - def shortFormFunc(names: Array[String]): Unit = { - // Applying a function with a short form - // this could be in a long form some like that: - // args.foreach(name => println(name)) or - // args.foreach(println _) with a place holder syntax - names.foreach(println) - } - - def partialAppliedFunc(names: Array[String]): Unit = { - // Partial applyied function - def sayHi(greet: String, name: String) = println(greet + name) - val hi = sayHi("Hi! ", _: String) - names.foreach(hi) - } - - def internalFuncAndClosures(names: Array[String]) { - val admirations = "!!!" // Local variable visible to the Internal function - - names.foreach(greet) // Applying Internal function - - /** - * Internal greeter function. - */ - def greet(name: String) = { - var greeting = "Hello, " // Local variable. - // Create a Closure and assign to a variable. - val greeter = (s: String) => println(greeting + s + admirations) - - // Apply the function - greeter(name) - - // Modify the context of the closure (Local variable) - greeting = "Bye, " - - // Applying again the function, this show the modified context - greeter(name) - } - } - - def repeatedParameters(names: String*) { - for(name <- names) println("Howdy!!! " + name) - } -} \ No newline at end of file diff -r dfc82beb5b10bbe7101bf6194e92cace5a9f11d5 -r 455359276087ccad452c44da30c039dbaad1fefb Topics/FunctionsAndClosures/FunctionsAndClosures.iml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Topics/FunctionsAndClosures/FunctionsAndClosures.iml Tue Nov 16 23:42:28 2010 -0600 @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + diff -r dfc82beb5b10bbe7101bf6194e92cace5a9f11d5 -r 455359276087ccad452c44da30c039dbaad1fefb Topics/FunctionsAndClosures/pom.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Topics/FunctionsAndClosures/pom.xml Tue Nov 16 23:42:28 2010 -0600 @@ -0,0 +1,22 @@ + + 4.0.0 + + net.thegeekinside.scala.talk.intro + FunctionsAndClosures + 1.0 + jar + + FunctionsAndClosures + http://maven.apache.org + + + net.thegeekinside.scala.talk.intro + Topics + 1.0 + + + + + + \ No newline at end of file diff -r dfc82beb5b10bbe7101bf6194e92cace5a9f11d5 -r 455359276087ccad452c44da30c039dbaad1fefb Topics/FunctionsAndClosures/src/main/scala/net/thegeekinside/scala/talk/intro/Main.scala --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Topics/FunctionsAndClosures/src/main/scala/net/thegeekinside/scala/talk/intro/Main.scala Tue Nov 16 23:42:28 2010 -0600 @@ -0,0 +1,60 @@ +package net.thegeekinside.scala.talk.intro + +/** + * Main entry point. + */ + +object Main { + def main(args: Array[String]) { + shortFormFunc(args) + + partialAppliedFunc(args) + + internalFuncAndClosures(args) + + repeatedParameters(args: _*) + } + + def shortFormFunc(names: Array[String]): Unit = { + // Applying a function with a short form + // this could be in a long form some like that: + // args.foreach(name => println(name)) or + // args.foreach(println _) with a place holder syntax + names.foreach(println) + } + + def partialAppliedFunc(names: Array[String]): Unit = { + // Partial applyied function + def sayHi(greet: String, name: String) = println(greet + name) + val hi = sayHi("Hi! ", _: String) + names.foreach(hi) + } + + def internalFuncAndClosures(names: Array[String]) { + val admirations = "!!!" // Local variable visible to the Internal function + + names.foreach(greet) // Applying Internal function + + /** + * Internal greeter function. + */ + def greet(name: String) = { + var greeting = "Hello, " // Local variable. + // Create a Closure and assign to a variable. + val greeter = (s: String) => println(greeting + s + admirations) + + // Apply the function + greeter(name) + + // Modify the context of the closure (Local variable) + greeting = "Bye, " + + // Applying again the function, this show the modified context + greeter(name) + } + } + + def repeatedParameters(names: String*) { + for(name <- names) println("Howdy!!! " + name) + } +} \ No newline at end of file diff -r dfc82beb5b10bbe7101bf6194e92cace5a9f11d5 -r 455359276087ccad452c44da30c039dbaad1fefb Topics/Hello/Hello.iml --- a/Topics/Hello/Hello.iml Tue Nov 16 20:43:03 2010 -0600 +++ b/Topics/Hello/Hello.iml Tue Nov 16 23:42:28 2010 -0600 @@ -22,9 +22,6 @@ - - - diff -r dfc82beb5b10bbe7101bf6194e92cace5a9f11d5 -r 455359276087ccad452c44da30c039dbaad1fefb Topics/JavaInterop/pom.xml --- a/Topics/JavaInterop/pom.xml Tue Nov 16 20:43:03 2010 -0600 +++ b/Topics/JavaInterop/pom.xml Tue Nov 16 23:42:28 2010 -0600 @@ -22,5 +22,15 @@ scalate-core 1.3 + + org.slf4j + slf4j-api + 1.6.1 + + + ch.qos.logback + logback-classic + 0.9.25 + \ No newline at end of file diff -r dfc82beb5b10bbe7101bf6194e92cace5a9f11d5 -r 455359276087ccad452c44da30c039dbaad1fefb Topics/PatternMatching/PatternMatching.iml --- a/Topics/PatternMatching/PatternMatching.iml Tue Nov 16 20:43:03 2010 -0600 +++ b/Topics/PatternMatching/PatternMatching.iml Tue Nov 16 23:42:28 2010 -0600 @@ -20,9 +20,6 @@ - - - diff -r dfc82beb5b10bbe7101bf6194e92cace5a9f11d5 -r 455359276087ccad452c44da30c039dbaad1fefb Topics/Testing/Testing.iml --- a/Topics/Testing/Testing.iml Tue Nov 16 20:43:03 2010 -0600 +++ b/Topics/Testing/Testing.iml Tue Nov 16 23:42:28 2010 -0600 @@ -19,9 +19,6 @@ - - - diff -r dfc82beb5b10bbe7101bf6194e92cace5a9f11d5 -r 455359276087ccad452c44da30c039dbaad1fefb Topics/Topics.iml --- a/Topics/Topics.iml Tue Nov 16 20:43:03 2010 -0600 +++ b/Topics/Topics.iml Tue Nov 16 23:42:28 2010 -0600 @@ -9,9 +9,6 @@ - - - diff -r dfc82beb5b10bbe7101bf6194e92cace5a9f11d5 -r 455359276087ccad452c44da30c039dbaad1fefb Topics/Traits/Traits.iml --- a/Topics/Traits/Traits.iml Tue Nov 16 20:43:03 2010 -0600 +++ b/Topics/Traits/Traits.iml Tue Nov 16 23:42:28 2010 -0600 @@ -20,10 +20,10 @@ - + diff -r dfc82beb5b10bbe7101bf6194e92cace5a9f11d5 -r 455359276087ccad452c44da30c039dbaad1fefb Topics/Traits/pom.xml --- a/Topics/Traits/pom.xml Tue Nov 16 20:43:03 2010 -0600 +++ b/Topics/Traits/pom.xml Tue Nov 16 23:42:28 2010 -0600 @@ -17,6 +17,15 @@ - + + org.slf4j + slf4j-api + 1.6.1 + + + ch.qos.logback + logback-classic + 0.9.25 + \ No newline at end of file diff -r dfc82beb5b10bbe7101bf6194e92cace5a9f11d5 -r 455359276087ccad452c44da30c039dbaad1fefb Topics/Traits/src/main/scala/net/thegeekinside/scala/talk/intro/Logging.scala --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Topics/Traits/src/main/scala/net/thegeekinside/scala/talk/intro/Logging.scala Tue Nov 16 23:42:28 2010 -0600 @@ -0,0 +1,50 @@ +package net.thegeekinside.scala.talk.intro + +/** + */ + +import org.slf4j.LoggerFactory + +trait Logging { + private val log = LoggerFactory.getLogger(getClass) + + def trace(message: String, values: Any*) = + log.trace(message, values.map(_.asInstanceOf[Object]).toArray) + + def trace(message: String, error: Throwable) = log.trace(message, error) + + def trace(message: String, error: Throwable, values: Any*) = + log.trace(message, error, values.map(_.asInstanceOf[Object]).toArray) + + def debug(message: String, values: Any*) = + log.debug(message, values.map(_.asInstanceOf[Object]).toArray) + + def debug(message: String, error: Throwable) = log.debug(message, error) + + def debug(message: String, error: Throwable, values: Any*) = + log.debug(message, error, values.map(_.asInstanceOf[Object]).toArray) + + def info(message: String, values: Any*) = + log.info(message, values.map(_.asInstanceOf[Object]).toArray) + + def info(message: String, error: Throwable) = log.info(message, error) + + def info(message: String, error: Throwable, values: Any*) = + log.info(message, error, values.map(_.asInstanceOf[Object]).toArray) + + def warn(message: String, values: Any*) = + log.warn(message, values.map(_.asInstanceOf[Object]).toArray) + + def warn(message: String, error: Throwable) = log.warn(message, error) + + def warn(message: String, error: Throwable, values: Any*) = + log.warn(message, error, values.map(_.asInstanceOf[Object]).toArray) + + def error(message: String, values: Any*) = + log.error(message, values.map(_.asInstanceOf[Object]).toArray) + + def error(message: String, error: Throwable) = log.error(message, error) + + def error(message: String, error: Throwable, values: Any*) = + log.error(message, error, values.map(_.asInstanceOf[Object]).toArray) +} diff -r dfc82beb5b10bbe7101bf6194e92cace5a9f11d5 -r 455359276087ccad452c44da30c039dbaad1fefb Topics/Traits/src/main/scala/net/thegeekinside/scala/talk/intro/Main.scala --- a/Topics/Traits/src/main/scala/net/thegeekinside/scala/talk/intro/Main.scala Tue Nov 16 20:43:03 2010 -0600 +++ b/Topics/Traits/src/main/scala/net/thegeekinside/scala/talk/intro/Main.scala Tue Nov 16 23:42:28 2010 -0600 @@ -4,8 +4,16 @@ * Using Traits. */ -object Main { +object Main{ def main(args: Array[String]) { - + val carlos = new Homo("Carlos") + carlos sayYourName() } +} + +class Animal +class Primate extends Animal + +class Homo(name: String) extends Primate with Logging { + def sayYourName() = info(name) } \ No newline at end of file diff -r dfc82beb5b10bbe7101bf6194e92cace5a9f11d5 -r 455359276087ccad452c44da30c039dbaad1fefb Topics/Typeless/Typeless.iml --- a/Topics/Typeless/Typeless.iml Tue Nov 16 20:43:03 2010 -0600 +++ b/Topics/Typeless/Typeless.iml Tue Nov 16 23:42:28 2010 -0600 @@ -14,16 +14,13 @@ + - - - - diff -r dfc82beb5b10bbe7101bf6194e92cace5a9f11d5 -r 455359276087ccad452c44da30c039dbaad1fefb Topics/pom.xml --- a/Topics/pom.xml Tue Nov 16 20:43:03 2010 -0600 +++ b/Topics/pom.xml Tue Nov 16 23:42:28 2010 -0600 @@ -29,7 +29,7 @@ Actors Classes - Closures + FunctionsAndClosures Hello JavaInterop PatternMatching @@ -52,16 +52,6 @@ ${scala.version} - org.slf4j - slf4j-api - 1.6.1 - - - ch.qos.logback - logback-classic - 0.9.25 - - org.scalatest scalatest ${scalatest.version}