0

可能重复:
如何在scala中编写函数isFunction?

我如何在 scala 中编写 isSymbol 函数,这样才能工作:

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

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

2 回答 2

3

如果您在谈论scala.Symbol

def isSymbol(x:Any) = x.isInstanceOf[Symbol]
于 2012-07-10T21:36:29.123 回答
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]
  }
}
于 2012-07-11T00:30:38.893 回答