3
def wait_for_element_present(element)
    wait = Selenium::WebDriver::Wait.new(:timeout => 30);
    wait.until{driver.find_element(element)};
end

上記の Ruby コードを見てください。2 つの質問があります。

(1)「Selenium::WebDriver::Wait.new(:timeout => 30)」について、「=>」はどういう意味ですか? 「:timeout」がルビ記号であることは知っていますが、「=>」と値「30」を続けて使用すると混乱します。これはルビ記号に関するある種のトリックですか?

(2) ハッシュを定義するときに「=>」という記号もありますよね? お気に入り:

cars = {
'altima' => 'nissan',
'camry' => 'toyota',
'rx7' => 'mazda'
}
puts cars['rx7']   =>   mazda

ここの「=>」は質問(1)と同じ意味ですか?

私はルビーの初心者です。コメントをいただければ幸いです。前もって感謝します!

4

2 に答える 2

5

はい、同じ意味です。どちらの場合も、ハッシュの定義です。Ruby では、ハッシュ リテラルの中括弧がメソッドのシグネチャの最後のパラメーターである場合、中括弧を省略できます。

例:

def my_method a, b, h
  puts a
  puts b
  puts h
end


my_method(1, 2, :timeout => 30)
# my_method(1, 2, timeout: 30) # alternative syntax for ruby 1.9+
# >> 1
# >> 2
# >> {:timeout=>30}

ハッシュである最後のパラメータに対してのみ機能することに注意してください。最後に複数のハッシュがある場合は、最後以外のすべてに通常の形式 (中括弧付き) を使用する必要があります。

于 2012-08-29T13:05:49.027 に答える
1
Selenium::WebDriver::Wait.new(:timeout => 30)

の省略形です

Selenium::WebDriver::Wait.new({:timeout => 30}) 

引数にハッシュを取ります。

于 2012-08-29T13:05:27.430 に答える