例として、ブラウザのユーザーエージェントをhttp://www.useragentstring.com/からの出力として取得し、変数に格納したいとします。現在、私は複数行で行うことができます。Chain Watirコマンド
require 'watir'
b = Watir::Browser.new(:chrome)
b.goto('http://www.useragentstring.com/')
agent = b.textarea.text
b.close
理想的には、私は1行でやりたいと思います。
require 'watir'
agent = Watir::Browser.new(:chrome).goto('http://www.useragentstring.com/').textarea.text
しかし、そのようなことは
NoMethodError: undefined method `textarea' for "http://www.useragentstring.com/":String`
goto
一部が動作しながら、だから、残りがないと失敗します。 watir
は私たちにwait_until_present.click
のようなことをさせてくれるので、私はこれらの方法を連鎖させる方法もあると思っています。これも可能ですか?
[ 'goto'](http://www.rubydoc.info/gems/ watir-webdriver/0.6.11/Watir/Browser#goto-instance_method)は 'self'を返さないので、どのように連鎖しているのか分かりません。 ['wait_until'](http://www.rubydoc.info/gems/watir/Watir/Waitable#wait_until-instance_method)のようなメソッドは' self'を返すので連鎖できます(例えば 'wait_until_present.click')。 – orde
後藤は自己を返さず、URIを返す、URIは文字列なので、そこで 'textarea'メソッドを呼び出すことはできません。 – RAJ
私はきれいに読めるコードに関する良いコーディング実践に基づいて、このことをお勧めしません。 1行でこれを行う際に(私がとにかく見ることができる)利点はなく、コードの内容に従うのが実質的に難しくなります。 –