В Perl, в чем разница между if (% hash) и if (определенным% hash)? - PullRequest
3 голосов
/ 06 июля 2010

В чем разница между if (%hash) и if (defined %hash)?

my %hash ;

if ( %hash) { 

  print "defined "; 
}

if (defined %hash)  { 
  print "defined ";
}

1 Ответ

22 голосов
/ 06 июля 2010

С определено perldoc -f :

Использование «defined» для агрегатов (хэшей и массивов) осуждается. Раньше сообщалось, есть ли память для этого агрегат когда-либо был выделен. Такое поведение может исчезнуть в будущих версиях Perl. Вы должны вместо этого использовать простой тест на размер:

  if (@an_array) { print "has array elements\n" }
  if (%a_hash)   { print "has hash members\n"   }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...