ScalaSigParser
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
[[SCALAの記事一覧]]
&topicpath;
*目次 [#c52c9250]
*ScalaSigParser [#s2fe513f]
2010/01/23現在では、scalaの安定バージョンは2.7.7だが、バ...
具体的にはscalaのバージョン2.8をいれると下記に示すURLのサ...
参考URL
http://stackoverflow.com/questions/1833762/scala-reflecti...
変更内容
http://www.scala-lang.org/node/4587
*ScalaSigParserインポート [#lc55d886]
import tools.scalap.scalax.rules.scalasig._
import scala.runtime._
*例:RichDouble クラスの情報をパースしてみる。 [#h7ad17a9]
val scalaSig = ScalaSigParser.parse(classOf[RichDouble])...
**結果 [#x7f7a75a]
scalaSig にクラス情報が格納される。
実行結果の結果表示がたくさんあるため、14行程度で出力が打...
scalaSig: scala.tools.scalap.scalax.rules.scalasig.Scala...
ScalaSig version 5.0
0: ClassSymbol(RichDouble, owner=scala.runtime, fla...
e)
1: RichDouble
2: scala.runtime
3: runtime
4: scala
5: scala
6: NoSymbol
7: ClassInfoType(ClassSymbol(RichDouble, owner=scal...
2, info=7 ,None),List(TypeRefType(ThisType(java.lang),ja...
TypeRefType(ThisType(scala),scala.Proxy,List()), TypeRef...
pe(ThisType(<nosymbol>.<root>),scala),scala.package),sca...
(TypeRefType(ThisType(scala),scala.Double,List()))), Type...
,scala.ScalaObject,List())))
8: TypeRefType(ThisType(java.lang),java.lang.Object...
9: ThisType(java.lang)
10: java.lang
11: lang
12: java
13: java
14: java.lang.O...
*クラス情報のtopLevelClassesの一つ目の情報を取得してみる...
val richDoubleSymbol = scalaSig.topLevelClasses.head
**結果 [#g8ef5134]
richDoubleSymbol: scala.tools.scalap.scalax.rules.scalas...
mbol(RichDouble, owner=scala.runtime, flags=40000002, inf...
*クラス情報のtopLevelClassesの一つ目の情報のメソッド情報...
val methods = richDoubleSymbol.children filter ( _ match {
case m : MethodSymbol => true
case _ => false
})
**結果 [#e29e0f28]
結果が改行無しで大量に表示されおり、途中で打ち止めになっ...
methods: Seq[scala.tools.scalap.scalax.rules.scalasig.Sym...
l(x, owner=0, flags=20080004, info=32 ,None), MethodSymbo...
s=200, info=42 ,None), MethodSymbol(self, owner=0, flags=...
thodSymbol(compare, owner=0, flags=200, info=54 ,None), M...
0, flags=200, info=62 ,None), MethodSymbol(max, owner=0, ...
e), MethodSymbol(abs, owner=0, flags=200, info=70 ,None),...
ner=0, flags=200, info=73 ,None), MethodSymbol(ceil, owne...
,None), MethodSymbol(floor, owner=0, flags=200, info=70 ...
til, owner=0, flags=200, info=83 ,None), MethodSymbol(unt...
info=102 ,None), MethodSymbol(to, owner=0, flags=200, in...
**結果をみやすくしてみる [#l0eef9a2]
methods foreach println
MethodSymbol(x, owner=0, flags=20080004, info=32 ,None)
MethodSymbol(<init>, owner=0, flags=200, info=42 ,None)
MethodSymbol(self, owner=0, flags=200, info=48 ,None)
MethodSymbol(compare, owner=0, flags=200, info=54 ,None)
MethodSymbol(min, owner=0, flags=200, info=62 ,None)
MethodSymbol(max, owner=0, flags=200, info=66 ,None)
MethodSymbol(abs, owner=0, flags=200, info=70 ,None)
MethodSymbol(round, owner=0, flags=200, info=73 ,None)
MethodSymbol(ceil, owner=0, flags=200, info=70 ,None)
MethodSymbol(floor, owner=0, flags=200, info=70 ,None)
MethodSymbol(until, owner=0, flags=200, info=83 ,None)
MethodSymbol(until, owner=0, flags=200, info=102 ,None)
MethodSymbol(to, owner=0, flags=200, info=108 ,None)
MethodSymbol(to, owner=0, flags=200, info=111 ,None)
MethodSymbol(toRadians, owner=0, flags=200, info=70 ,None)
MethodSymbol(toDegrees, owner=0, flags=200, info=70 ,None)
MethodSymbol(isInfinity, owner=0, flags=200, info=120 ,N...
MethodSymbol(isPosInfinity, owner=0, flags=200, info=120...
MethodSymbol(isNegInfinity, owner=0, flags=200, info=120...
どのようなメソッドが実装されているのか一覧を得ることがで...
*Traitなのかどうか調べる [#ube831a9]
richDoubleSymbol.isTrait
**結果 [#t25fd345]
res1: Boolean = false
*他のクラスでTraitかどうか調べる方法一行バージョン [#u081...
ScalaSigParser.parse(classOf[Ordered[Any]]).get.topLevel...
**結果 [#f11a5098]
res2: Boolean = true
*他参考URL [#d7a2d5da]
http://www.scala-lang.org/node/4721
*感想 [#v5bfe546]
ScalaSigParserに関する情報はまだ乏しく、こまめに検索など...
終了行:
[[SCALAの記事一覧]]
&topicpath;
*目次 [#c52c9250]
*ScalaSigParser [#s2fe513f]
2010/01/23現在では、scalaの安定バージョンは2.7.7だが、バ...
具体的にはscalaのバージョン2.8をいれると下記に示すURLのサ...
参考URL
http://stackoverflow.com/questions/1833762/scala-reflecti...
変更内容
http://www.scala-lang.org/node/4587
*ScalaSigParserインポート [#lc55d886]
import tools.scalap.scalax.rules.scalasig._
import scala.runtime._
*例:RichDouble クラスの情報をパースしてみる。 [#h7ad17a9]
val scalaSig = ScalaSigParser.parse(classOf[RichDouble])...
**結果 [#x7f7a75a]
scalaSig にクラス情報が格納される。
実行結果の結果表示がたくさんあるため、14行程度で出力が打...
scalaSig: scala.tools.scalap.scalax.rules.scalasig.Scala...
ScalaSig version 5.0
0: ClassSymbol(RichDouble, owner=scala.runtime, fla...
e)
1: RichDouble
2: scala.runtime
3: runtime
4: scala
5: scala
6: NoSymbol
7: ClassInfoType(ClassSymbol(RichDouble, owner=scal...
2, info=7 ,None),List(TypeRefType(ThisType(java.lang),ja...
TypeRefType(ThisType(scala),scala.Proxy,List()), TypeRef...
pe(ThisType(<nosymbol>.<root>),scala),scala.package),sca...
(TypeRefType(ThisType(scala),scala.Double,List()))), Type...
,scala.ScalaObject,List())))
8: TypeRefType(ThisType(java.lang),java.lang.Object...
9: ThisType(java.lang)
10: java.lang
11: lang
12: java
13: java
14: java.lang.O...
*クラス情報のtopLevelClassesの一つ目の情報を取得してみる...
val richDoubleSymbol = scalaSig.topLevelClasses.head
**結果 [#g8ef5134]
richDoubleSymbol: scala.tools.scalap.scalax.rules.scalas...
mbol(RichDouble, owner=scala.runtime, flags=40000002, inf...
*クラス情報のtopLevelClassesの一つ目の情報のメソッド情報...
val methods = richDoubleSymbol.children filter ( _ match {
case m : MethodSymbol => true
case _ => false
})
**結果 [#e29e0f28]
結果が改行無しで大量に表示されおり、途中で打ち止めになっ...
methods: Seq[scala.tools.scalap.scalax.rules.scalasig.Sym...
l(x, owner=0, flags=20080004, info=32 ,None), MethodSymbo...
s=200, info=42 ,None), MethodSymbol(self, owner=0, flags=...
thodSymbol(compare, owner=0, flags=200, info=54 ,None), M...
0, flags=200, info=62 ,None), MethodSymbol(max, owner=0, ...
e), MethodSymbol(abs, owner=0, flags=200, info=70 ,None),...
ner=0, flags=200, info=73 ,None), MethodSymbol(ceil, owne...
,None), MethodSymbol(floor, owner=0, flags=200, info=70 ...
til, owner=0, flags=200, info=83 ,None), MethodSymbol(unt...
info=102 ,None), MethodSymbol(to, owner=0, flags=200, in...
**結果をみやすくしてみる [#l0eef9a2]
methods foreach println
MethodSymbol(x, owner=0, flags=20080004, info=32 ,None)
MethodSymbol(<init>, owner=0, flags=200, info=42 ,None)
MethodSymbol(self, owner=0, flags=200, info=48 ,None)
MethodSymbol(compare, owner=0, flags=200, info=54 ,None)
MethodSymbol(min, owner=0, flags=200, info=62 ,None)
MethodSymbol(max, owner=0, flags=200, info=66 ,None)
MethodSymbol(abs, owner=0, flags=200, info=70 ,None)
MethodSymbol(round, owner=0, flags=200, info=73 ,None)
MethodSymbol(ceil, owner=0, flags=200, info=70 ,None)
MethodSymbol(floor, owner=0, flags=200, info=70 ,None)
MethodSymbol(until, owner=0, flags=200, info=83 ,None)
MethodSymbol(until, owner=0, flags=200, info=102 ,None)
MethodSymbol(to, owner=0, flags=200, info=108 ,None)
MethodSymbol(to, owner=0, flags=200, info=111 ,None)
MethodSymbol(toRadians, owner=0, flags=200, info=70 ,None)
MethodSymbol(toDegrees, owner=0, flags=200, info=70 ,None)
MethodSymbol(isInfinity, owner=0, flags=200, info=120 ,N...
MethodSymbol(isPosInfinity, owner=0, flags=200, info=120...
MethodSymbol(isNegInfinity, owner=0, flags=200, info=120...
どのようなメソッドが実装されているのか一覧を得ることがで...
*Traitなのかどうか調べる [#ube831a9]
richDoubleSymbol.isTrait
**結果 [#t25fd345]
res1: Boolean = false
*他のクラスでTraitかどうか調べる方法一行バージョン [#u081...
ScalaSigParser.parse(classOf[Ordered[Any]]).get.topLevel...
**結果 [#f11a5098]
res2: Boolean = true
*他参考URL [#d7a2d5da]
http://www.scala-lang.org/node/4721
*感想 [#v5bfe546]
ScalaSigParserに関する情報はまだ乏しく、こまめに検索など...
ページ名: