পার্লের "আমার" কীওয়ার্ডটি কীভাবে ব্যবহার করব?


90

আমি পরিবর্তনশীল নামের সামনে "আমার" কীওয়ার্ডটি অনলাইনে পার্ল স্ক্রিপ্টগুলিতে অনলাইনে দেখছি তবে এর অর্থ কী তা আমার কোনও ধারণা নেই। আমি ম্যানুয়াল পৃষ্ঠাগুলি এবং অন্যান্য সাইটগুলিকে অনলাইনে পড়ার চেষ্টা করেছি তবে এটি কীভাবে ব্যবহৃত হয় এবং ম্যানুয়ালটির মধ্যে পার্থক্য রেখে আমি এটি কী তা বুঝতে অসুবিধা হচ্ছে।

উদাহরণস্বরূপ, এই পোস্টে অ্যারের দৈর্ঘ্য পেতে এর ব্যবহৃত: পার্লে একটি অ্যারের আকার সন্ধান করুন

তবে ম্যানুয়ালটিতে বলা হয়েছে:

আমার তালিকাভুক্ত ভেরিয়েবলগুলি এনকোলেসিং ব্লক, ফাইল বা ইওলকে স্থানীয় (বর্ণবাদী) হিসাবে ঘোষণা করে। যদি একাধিক মান তালিকাভুক্ত হয় তবে তালিকাটি অবশ্যই বন্ধনীতে রাখা উচিত।

এটি কী করে এবং এটি কীভাবে ব্যবহৃত হয়?


4
পুনরায় "এটির এই পোস্টে অ্যারের দৈর্ঘ্য পেতে ব্যবহৃত", একেবারেই নয়। myএটি অন্তত ফ্যাক্টর না। এটি স্কেলার অ্যাসাইনমেন্ট অপারেটর ( =) যা স্কেলারের প্রসঙ্গটি প্রয়োগ করে @arr
আইকেগামী

যদি এটি সত্যিই "আপনার" না হয় তবে আপনার এটি ব্যবহার করা উচিত নয়।
আইসেইনাক

উত্তর:


141

myএকটি ভেরিয়েবলের সুযোগকে সীমাবদ্ধ করে । ভেরিয়েবলের সুযোগ যেখানে এটি দেখা যায়। ভেরিয়েবলের দরকার যেখানে ভেরিয়েবলের সুযোগ হ্রাস করা ভাল প্রোগ্রামিংয়ের একটি মৌলিক দিক। এটি কোডটিকে আরও পঠনযোগ্য এবং কম ত্রুটি-প্রবণ করে তোলে এবং এর ফলে প্রচুর উপকারিত সুবিধা পাওয়া যায়।

আপনি যদি ব্যবহার করে কোনও ভেরিয়েবল ঘোষণা না করেন তবে myতার পরিবর্তে একটি গ্লোবাল ভেরিয়েবল তৈরি করা হবে। এটি এড়াতে হবে। use strict;পার্লকে ব্যবহার করে আপনাকে গ্লোবাল ভেরিয়েবলগুলি সুস্পষ্টভাবে তৈরি করা থেকে বিরত রাখতে চান বলে আপনার প্রোগ্রামগুলিতে সর্বদা আপনার use strict;(এবং use warnings;) ব্যবহার করা উচিত ।


সম্পর্কিত পড়া: কেন ব্যবহার করবেন use strict;এবং use warnings;?


11
অবশেষে একটি উত্তর যে ব্যাখ্যা কেন
এইসুইটসস ব্ল্যাকনট 21

জেএস থেকে এখানে আসা লোকদের জন্য: এটি মূলত জাভাস্ক্রিপ্টের মতো varএবং এর মত let'use strict';জেএস ছাড়াই আপনাকে কোনও কীওয়ার্ড ছাড়াই নতুন গ্লোবাল ভেরিয়েবলগুলি ঘোষণা করতে দেবে, যা অনুশীলনের সেরা হিসাবে বিবেচিত নয়।
বৈদ্যুতিন কফি

@ ইলেক্ট্রিক কফি, জেএস পদগুলিতে, প্রশ্নটি হবে "কী করবে letএবং কী করবে এবং varসেগুলি কীভাবে ব্যবহার করা উচিত?" এবং হ্যাঁ, উত্তরটি প্রায় একই রকম হবে। (জাতীয় এর letVars পার্ল মত অনেক আছে myVars ছাড়া letVars দখল করা যাবে না।)
ikegami

আমি কেবল এটাই বোঝাতে চাইছি যে লোকেরা জেএস থেকে পার্ল এলে একই ধারণাটি ব্যাখ্যা করার সহজ উপায় হবে
ইলেকট্রিক কফি

@ ইলেক্ট্রিক কফি 1) এমন প্রোগ্রামার যা স্কোপিং বোঝে তাদের ভাষা পরিবর্তন করার পরে তাদের আবার ব্যাখ্যা করার দরকার নেই। ২) নিশ্চিত নন যে আপনি আসলে স্কোপিংয়ের ব্যাখ্যা করেছেন, কোনও জেএস প্রোগ্রামার বুঝতে পারে বা অন্যথায়। আপনি ব্যাখ্যা করার চেষ্টা করছেন use strict;? কিন্তু এটি প্রশ্ন ছিল না, এবং এর use strict;চেয়ে আরও বেশি কিছু করে। অথবা হতে পারে আপনি যোগাযোগ করতে চেয়েছিলেন যা myবার্সা পছন্দ পছন্দ letএবং করাকে সীমাবদ্ধ করে var, তবে এটি উত্তরের প্রথম বাক্যটি। 3) আপনি যদি কোনও প্রশ্নের উত্তর আলাদাভাবে দিতে চান তবে উত্তরগুলির জন্য এটি।
ইকগামি

27

দ্রুত সংক্ষিপ্তসার: myএকটি নতুন ভেরিয়েবল তৈরি করে, localঅস্থায়ীভাবে একটি ভেরিয়েবলের মান সংশোধন করে

নীচের উদাহরণে, global :: a 'গ্লোবাল' নেমস্পেসে $ এ বোঝায়।

$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

অর্থাত্ localঅস্থায়ীভাবে ভেরিয়েবলের মান পরিবর্তন করে তবে কেবলমাত্র এটির স্কোপের মধ্যে।

সূত্র: http://www.perlmonks.org/?node_id=94007

হালনাগাদ

মধ্যে পার্থক্য সম্পর্কে ourএবং myদয়া করে দেখুন

( এইসুইটসআইবল্যাকটকে ধন্যবাদ )


'তাদের' বোঝানোর জন্য যত্নশীল? আমি সবসময় তাদের গুলিয়ে ফেলেছি।
rdodev

@ আরোদেভ: আপনার অর্থ কী?
ইগোর চুবিন

আমি পার্ল কোডটি 'আমার' এবং 'তাদের' উভয়ের সাথেই দেখতে পেয়েছি এবং অনুশীলনে কখনও পার্থক্যটি বেশ বুঝতে পারি নি।
rdodev

@ আরোদেভ: আপনি দয়া করে আমাকে কিছু কোডের একটি লিঙ্ক পাঠাতে পারেন their?
ইগোর চুবিন

4
@rdodev আমার মনে হয় আপনি অর্থ our: stackoverflow.com/questions/845060/...
ThisSuitIsBlackNot

4

আমার () এর মাধ্যমে ব্যক্তিগত ভেরিয়েবলগুলি এর জন্য প্রাথমিক ডকুমেন্টেশনmy

আপনি যে অ্যারে আকারের উদাহরণটি উল্লেখ করেছেন তাতে অ্যারের আকার খুঁজে পাওয়া যায় না। এটি অ্যারের আকার ধরে রাখতে একটি নতুন ভেরিয়েবল তৈরি করতে ব্যবহৃত হয়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.