我如何在scala中编写isSymbol函数,以便这样做:
def isSymbol(x:Any) = /* SomeCode */
println(isSymbol('aSimbol)) //true
println(isSymbol("not a simbol")) //false
答案 0 :(得分:3)
如果您在谈论scala.Symbol:
def isSymbol(x:Any) = x.isInstanceOf[Symbol]
答案 1 :(得分:0)
使用反射(Scala 2.10M4),这可以完成如下(只是为了表明这个想法,@ ChrisJamesC提供的解决方案对于给定的情况更简单):
import scala.reflect.runtime.universe.Flag
import scala.reflect.runtime.universe.typeOf
import scala.reflect.runtime.{ currentMirror => cm }
object Check {
def isSymbol(x: Any): Boolean = {
cm.reflect(x).symbol.asType =:= typeOf[Symbol]
}
}