2012-02-19 3 views
3
class MyWatir < Watir::Browser 
    def with_watir_window(win) 
    cw = window #current window 
    win.use 
    yield 
    cw.use 
    end 
    def qty  
    ret = nil     
    with_watir_window(@win2){ 
     ret = td(:id,'qty').text 
    }  
    ret 
    end 
end 

第2の関数では、ret = nilと宣言し、最後に記載すると醜いようです。値を返すクリーンな方法がありますか?このコードスニペットの方が良いですか?

答えて

8

ブロックから内部の値を返します。また、例外が発生した場合は、一貫した状態にしておいてください。

class MyWatir < Watir::Browser 
    def with_watir_window(win) 
    cw = window #current window 
    win.use 
    # the begin/end will evaluate to the value returned by `yield`. 
    # if an exception occurs, the window will be reset properly and 
    # there will be no return value. 
    begin 
     yield 
    ensure 
     cw.use 
    end 
    end 

    def qty      
    with_watir_window(@win2) do 
     td(:id,'qty').text 
    end 
    end 
end 
+0

リテラルには完璧な答えです。ありがとう – typist

+0

@typist:喜んで:) –

関連する問題