如何在scala中编写函数isSymbol?

时间:2012-07-10 21:30:01

标签: scala

  

可能重复:
  How to write the function isFunction in scala?

我如何在scala中编写isSymbol函数,以便这样做:

def isSymbol(x:Any) = /* SomeCode */

println(isSymbol('aSimbol)) //true
println(isSymbol("not a simbol")) //false

2 个答案:

答案 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]
  }
}