はい、非 Pythonistas によって怠け者と見なされていることは知っています。私が質問する理由は、多くの Scala ライブラリ (Scala-dbc など。しかし、私が調べているのはそれだけではありません) でドキュメントがまだひどく不足しているためです。実行時にオブジェクト/クラスの属性を確認できれば、少なくとも何が利用できるかを理解してください。ありがとう。
5193 次
4 に答える
11
Scala にはリフレクション API がありません。この情報にアクセスする唯一の方法は、Java リフレクション APIを使用することです。これには、Java クラスでの Scala の表現方法やインターフェースが将来変更される可能性があるため、構造が変更される可能性があるという欠点があります。
scala> classOf[AnyRef].getMethods
res0: Array[java.lang.reflect.Method] = Array(public final void ...
ScalaSigParserを使用して、バイト コードに存在する特定の型情報にアクセスできます。
import tools.scalap.scalax.rules.scalasig._
import scala.runtime._
val scalaSig = ScalaSigParser.parse(classOf[RichDouble])
于 2009-12-29T09:00:09.347 に答える
9
これは私の REPL の主な用途の 1 つです。オブジェクトの名前、ドット、TAB の順に入力すると、使用可能なすべてのメソッドが表示されます。
完璧ではありません。1 つには、クラスを拡張しない限り使用できない保護されたメソッドが表示されます。もう 1 つの理由として、暗黙的な変換によって使用できるメソッドが表示されません。
そしてもちろん、IDE はすべてそれを行うことができます。
于 2009-12-29T13:01:22.857 に答える
8
あなたはあなたがあなたに必要なものを与えるであろう次のようなものが欲しいかもしれません。この場合、明らかに文字列で動作します。
val testStr = "Panda"
testStr.getClass.getMethods.foreach(println)
それは動作しますか?
于 2009-12-29T19:16:40.973 に答える
0
この小さなヘルパーを使用して、REPL を強化することができます。
于 2011-08-06T10:02:39.790 に答える