0

重複
の可能性:関数isFunctionをscalaで記述する方法は?

これが機能するように、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 に答える