Как я определяю, реализует ли объект метод в Perl?

Вы можете использовать готовое решение из Apache Commons . Вот пример:

StringBuilder sb = new StringBuilder(" 111     11 ");
String trimmedString = StringUtils.normalizeSpace(sb.toString());
String[] trimmedAr = trimmedString.split(" ");
System.out.println(Arrays.toString(trimmedAr));

Вывод: [111, 11].

6
задан cdleary 20 January 2009 в 10:12
поделиться

1 ответ

use Scalar::Util qw(blessed);
if( blessed($obj) and $obj->can('some_method') ){ 

}

"может" здесь быть методом, наследованным всеми классами от UNIVERSAL. Классы могут переопределить этот метод, но не хорошая идея.

Кроме того, "может" возвращать ссылку на функцию, таким образом, можно сделать:

$foo->can('some_method')->( $foo , @args );

или

my $sub = $foo->can('some_method'); 
$foo->$sub( @args ); 

Отредактируйте Обновленный Цепочечный Синтаксис благодаря Brian Phillips

16
ответ дан 8 December 2019 в 14:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: