SORU
26 EYLÜL 2009, CUMARTESİ


Perl'de nasıl eğer $a değişkeni tanımlanır ve kısaca içeren bir onay olmayan dize uzunluğu sıfır miyim?

Ben şu anda aşağıdaki Perl eğer bir değişkenin tanımlı olup olmadığını kontrol etmek için kullanın ve metin içerir. defined ilk kontrol etmek için bir önlemek için var 'başlatılmamış değer' uyarı:

if (defined $name && length $name > 0) {
    # do something with $name
}

(Muhtemelen daha kısa) daha iyi bir şekilde bu yazan mı var?

CEVAP
26 EYLÜL 2009, CUMARTESİ


Sen undef değerini (ve kusurlu değişken söyler Perl 5.10) kullanmak için: uyarı ile uğraşmak zorunda değilsiniz bu yüzden sık sık definedness için kontrol edin

 Use of uninitialized value $name in ...

Yani, bu uyarı, insanlar gelip ile her türlü Kanunu ve o kodu başlar gibi bakmak önemli bir parçası da çözüm yerine sakız ve koli bandı. Bazen, daha iyi ne yaptığını açıkça önlemek için çalıştığınız uyarı kapatarak göstermek için:

 {
 no warnings 'uninitialized';

 if( length $name ) {
      ...
      }
 }

Diğer durumlarda, veriler yerine null değeri bir tür kullanın. Perl 5.10's defined-or operator ile length açık boş bir dize (tanımlı ve sıfır uzunlukta geri ver) uyarı tetikleyecek değişken yerine verebilirsiniz:

 use 5.010;

 if( length( $name // '' ) ) {
      ...
      }

Perl 5, 12, biraz length on an undefined value also returns undefined çünkü daha kolay. Bu salaklık bir parça gibi görünebilir, ama olmak istemiş olabilirim matematikçi mutlu ediyor. Bu soru var neden olan bir uyarı, sorun yok.

use 5.012;
use warnings;

my $name;

if( length $name ) { # no warning
    ...
    }

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • HBO

    HBO

    17 Mayıs 2006
  • Manuel Vizcaino

    Manuel Vizca

    27 Mayıs 2008
  • The Slow Mo Guys

    The Slow Mo

    15 AĞUSTOS 2010

İLGİLİ SORU / CEVAPLAR