2014-12-26 3 views
3

В чем разница междуWWW :: Механизируйте полевые методы

$mech -> field($name, $value) 

и

$mech -> set_fields($name => $value) 

и почему они оба существуют? Кажется, каждый из них задал поле с именем $name - $value.

+3

Иногда такое же действие возможно двумя разными способами. Я бы не стал беспокоиться об этом чрезмерно - часто это результат того, что кто-то пытается написать код для поддержки двух разных парадигм. – Sobrique

ответ

4
$mech -> field($name, $value) 

Поле() позволяет устанавливать только одно имя за раз. Но

$mech -> set_fields($name => $value, $name2 => $value2,... $nameN => $valueN) 

... set_fields() позволяет вам установить несколько имен одновременно.

Это на самом деле не такая большая проблема, потому что вы всегда можете использовать первый в цикле:

my @data = (
    first => 'A', 
    last => 'B', 
    age => 22, 
    #possibly 100,000 other name/value pairs 
); 

my($name, $value); 

while(@data) { 
    ($name, $value) = splice(@data, 0, 2); 
    $mech->field($name, $value); 
} 

... но это более удобно писать:

$mech->set_fields(@data); 
Смежные вопросы