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

  • calicoJake

    calicoJake

    29 EKİM 2007
  • ipsy

    ipsy

    1 EKİM 2012
  • Mark Halberstadt

    Mark Halbers

    19 ŞUBAT 2010

İLGİLİ SORU / CEVAPLAR