|
Scala example source code file (NamedParam.scala)
The Scala NamedParam.scala source code
/* NSC -- new Scala compiler
* Copyright 2005-2011 LAMP/EPFL
* @author Paul Phillips
*/
package scala.tools.nsc
package interpreter
import NamedParam._
trait NamedParamCreator {
protected def freshName: () => String
def apply(name: String, tpe: String, value: Any): NamedParam = NamedParamClass(name, tpe, value)
def apply[T: Manifest](name: String, x: T): NamedParam = new Typed[T](name, x)
def apply[T: Manifest](x: T): NamedParam = apply(freshName(), x)
def clazz(name: String, x: Any): NamedParam = new Untyped(name, x)
def clazz(x: Any): NamedParam = clazz(freshName(), x)
implicit def namedValue[T: Manifest](name: String, x: T): NamedParam = apply(name, x)
implicit def tuple[T: Manifest](pair: (String, T)): NamedParam = apply(pair._1, pair._2)
}
object NamedParam extends NamedParamCreator {
class Typed[T: Manifest](val name: String, val value: T) extends NamedParam {
val tpe = TypeStrings.fromManifest[T]
}
class Untyped(val name: String, val value: Any) extends NamedParam {
val tpe = TypeStrings.fromValue(value)
}
protected val freshName = {
var counter = 0
() => { counter += 1; "p" + counter }
}
}
case class NamedParamClass(name: String, tpe: String, value: Any) extends NamedParam { }
trait NamedParam {
def name: String
def tpe: String
def value: Any
override def toString = name + ": " + tpe
}
Other Scala examples (source code examples)Here is a short list of links related to this Scala NamedParam.scala source code file: |
| ... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.