2012-02-23 7 views
1

すべてのメソッドを実行して出力できますか?ドット演算子を通してシンボルを渡す方法がわからない。ところでRuby、すべてのメソッドを実行

meth.each { |x| puts "#{x}: #{link.send(x)}" } 

:あなたがしているのであれば代わりにlink.:nodeのそれはあなたがsendを使用することができますが、コメントで指摘したように、メソッドの多くは間違ったアリティを持つことになりますlink.node

require 'mechanize' 

agent = Mechanize.new 
page = agent.get("http://stackoverflow.com/") 


link = page.link 
p meth = link.methods #=> [:node, :href, :attributes, :page, :referer, :click, :dom_id, :dom_class, :pretty_print, :inspect, :rel, :rel?, :noreferrer?, :text, :to_s, :uri, :pretty_print_cycle, :pretty_print_instance_variables, :pretty_print_inspect, :nil?, :===, :=~, :!~, :eql?, :hash, :<=>, :class, :singleton_class, :clone, :dup, :initialize_dup, :initialize_clone, :taint, :tainted?, :untaint, :untrust, :untrusted?, :trust, :freeze, :frozen?, :methods, :singleton_methods, :protected_methods, :private_methods, :public_methods, :instance_variables, :instance_variable_get, :instance_variable_set, :instance_variable_defined?, :instance_of?, :kind_of?, :is_a?, :tap, :send, :public_send, :respond_to?, :respond_to_missing?, :extend, :display, :method, :public_method, :define_singleton_method, :object_id, :to_enum, :enum_for, :pretty_inspect, :==, :equal?, :!, :!=, :instance_eval, :instance_exec, :__send__, :__id__] 


    #this doesn't work. 
    meth.each do |x| 
     puts "#{x}: #{link.x}" 
    end 
+0

は、これらの方法の多くは、引数を必要として呼び出すことはできませんとのメソッドを呼び出すには、パブリックメソッド

meth.each { |x| puts "#{x}: #{link.send(x)}" } 

を呼び出すには、プライベートメソッド

meth.each { |x| puts "#{x}: #{link.class.send(x)}" } 

を呼び出すには彼らがいなければ。あなたは何を達成しようとしていますか? – PinnyM

+0

あなたはどのようにメソッドを実行していますか?また、メソッド名の後に引数なしで渡されたメソッドが続く文字列を出力しています。 – sunnyrjuneja

+0

私が学ぶのを助けます。メソッドはシンボルであり、シンボルをドット演算子にプッシュする方法はわかりません.... 'link。:node'を渡すのではなく、' link.node'でなければなりません。 –

答えて

6

あなたはクラスのメソッドにアクセスする場合は、次の方法

を使用することができます

は、引数またはのparams

meth.each { |x| puts "#{x}: #{link.class.send(x, params_or_arguments)}" } 
meth.each { |x| puts "#{x}: #{link.send(x, params_or_arguments)}" } 
3

する必要がありますルビーを学ぼうと、私はあなたのために面白いかもしれません宝石を書いた:methodfinder

+0

ワウは強力です宝石! –

+0

こんにちはMicheal ..私はここでヘルプ(KS)で評判ではなく答えました。私はSOFの頻繁なユーザーではありません。私は理解できる、すべてが担当者のためだけにここにある。私はあなたを傷つけませんでした... – Jak

+0

@Jak心配しないで、私は気にしません、私は答えが基本的に同じであるので、少し奇妙なスイッチを発見しました。とにかく、もう一度+1して前のコメントを削除します。私たちはあなたを将来的にもっと活発に見ていきたいと思っています:-) –

関連する問題