lundi 7 mars 2016

implement conversion parameters function with scala

I'm trying to implement something like clever parameters converter function with Scala.

Basically in my program I need to read parameters from a properties file, so obviously they are all strings and I would like then to convert each parameter in a specific type that I pass as parameter.

This is the implementation that I start coding:

def getParam[T](key : String , value : String, paramClass : T): Any = {

    value match {
        paramClass match {
          case i if i == Int => value.trim.toInt
          case b if b == Boolean => value.trim.toBoolean
          case _ => value.trim
        }
    }

   /* Exception handling is missing at the moment */
}

Usage:

val convertedInt = getParam("some.int.property.key", "10", Int)
val convertedBoolean = getParam("some.boolean.property.key", "true", Boolean)
val plainString = getParam("some.string.property.key", "value",String)

Points to note:

  • For my program now I need just 3 main type of type: String ,Int and Boolean, if is possible I would like to extends to more object type

  • This is not clever, cause I need to explicit the matching against every possibile type to convert, I would like an more reflectional like approach

  • This code doesn't work, it give me compile error: "object java.lang.String is not a value" when I try to convert( actually no conversion happen because property values came as String).

Can anyone help me? I'm quite newbie in Scala and maybe I missing something





Aucun commentaire:

Enregistrer un commentaire