Saya terus melihat kata kunci "saya" di depan nama variabel dalam contoh skrip Perl online tetapi saya tidak tahu apa artinya. Saya mencoba membaca halaman manual dan situs lain secara online tetapi saya mengalami kesulitan untuk membedakan untuk apa mengingat perbedaan antara cara saya melihatnya digunakan dan manual.
Misalnya, digunakan untuk mendapatkan panjang array di posting ini: Temukan ukuran array di Perl
Tapi manualnya mengatakan:
A my mendeklarasikan variabel yang terdaftar menjadi lokal (secara leksikal) ke blok, file, atau eval yang terlampir. Jika lebih dari satu nilai terdaftar, daftar harus ditempatkan dalam tanda kurung.
Apa fungsinya dan bagaimana itu digunakan?
perl
scope
declaration
Tinjuan kemarahan
sumber
sumber
my
tidak memperhitungkannya sedikit pun. Ini adalah operator penugasan skalar (=
) yang memberlakukan konteks skalar@arr
.Jawaban:
my
membatasi ruang lingkup variabel. Ruang lingkup variabel adalah di mana ia dapat dilihat. Mengurangi ruang lingkup variabel ke tempat variabel dibutuhkan adalah aspek fundamental dari pemrograman yang baik. Itu membuat kode lebih mudah dibaca dan tidak terlalu rentan terhadap kesalahan, dan menghasilkan banyak manfaat yang diperoleh.Jika Anda tidak mendeklarasikan variabel menggunakan
my
, variabel global akan dibuat. Ini harus dihindari. Menggunakanuse strict;
memberitahu Perl bahwa Anda ingin dicegah membuat variabel global secara implisit, itulah sebabnya Anda harus selalu menggunakanuse strict;
(danuse warnings;
) dalam program Anda.Bacaan terkait: Mengapa menggunakan
use strict;
danuse warnings;
?sumber
var
danlet
dalam JavaScript. Tanpa'use strict';
JS, Anda dapat mendeklarasikan variabel global baru tanpa salah satu kata kunci, yang tidak dianggap sebagai praktik terbaik.let
danvar
dilakukan dan bagaimana mereka harus digunakan?" Dan ya, jawabannya kira-kira sama. (JSlet
vars sangat mirip dengan Perl'smy
vars, kecuali bahwalet
vars tidak dapat ditangkap.)use strict;
? Tapi bukan itu pertanyaannya, danuse strict;
melakukan lebih dari itu. Atau mungkin Anda bermaksud untuk berkomunikasi yangmy
membatasi ruang lingkup vars likelet
andvar
do, tapi itulah kalimat pertama dari jawabannya. 3) Jika Anda ingin menjawab pertanyaan secara berbeda, untuk itulah Answers.Ringkasan cepat:
my
membuat variabel baru,local
mengubah nilai variabel untuk sementaraPada contoh di bawah, $ :: a merujuk ke $ a di namespace 'global'.
$a = 3.14159; { my $a = 3; print "In block, \$a = $a\n"; print "In block, \$::a = $::a\n"; } print "Outside block, \$a = $a\n"; print "Outside block, \$::a = $::a\n"; # This outputs In block, $a = 3 In block, $::a = 3.14159 Outside block, $a = 3.14159 Outside block, $::a = 3.14159
yaitu,
local
mengubah sementara nilai variabel, tetapi hanya dalam ruang lingkupnya.Sumber: http://www.perlmonks.org/?node_id=94007
Memperbarui
Tentang perbedaan antara
our
danmy
silakan lihat(Terima kasih kepada ThisSuitIsBlackNot ).
sumber
their
?our
: stackoverflow.com/questions/845060/…Variabel Pribadi melalui my () adalah dokumentasi utama untuk
my
.Dalam contoh ukuran array yang Anda sebutkan, ini tidak digunakan untuk mencari ukuran array. Ini digunakan untuk membuat variabel baru untuk menampung ukuran array.
sumber