পার্লে কোনও স্ট্রিং ফাঁকা আছে কি না তা পরীক্ষা করার সঠিক উপায় কী?


96

আমি একটি স্ট্রিং ফাঁকা আছে কিনা তা পরীক্ষা করার জন্য এই কোডটি ব্যবহার করেছি:

if ($str == "")
{
  // ...
}

এবং একই সমতুল্য অপারেটরের সাথেও ...

if ($str != "")
{
  // ...
}

এটি কাজ করে বলে মনে হচ্ছে (আমি মনে করি), তবে আমি নিশ্চিত নই যে এটি সঠিক উপায়, বা যদি কোনও অপ্রত্যাশিত কমতি রয়েছে। কিছু এটি সম্পর্কে সঠিক মনে হয় না।

উত্তর:


135

পার্লে স্ট্রিং তুলনার জন্য, ব্যবহার করুন eqবা ne:

if ($str eq "")
{
  // ...
}

==এবং !=অপারেটরদের হয় সাংখ্যিক তুলনা অপারেটর। তারা উভয় অপারেন্ডকে তুলনা করার আগে পূর্ণসংখ্যায় রূপান্তর করার চেষ্টা করবে।

দেখুন perlop আরও তথ্যের জন্য পাতা।


হ্যাঁ, এটি ব্যবহার করা সত্ত্বেও আপনার সতর্ক হওয়া দরকার যে এটি যদি অপরিশোধিত হয় এবং আপনি যদি সতর্কতা ব্যবহার করেন তবে রানটাইম সতর্কতা পাবেন। সতর্কতা কাছাকাছি পেতে অনেক উপায়।
ইভান ক্যারল

92
  1. পার্লে স্ট্রিংগুলি যেভাবে সংরক্ষণ করা হয়েছে তার কারণে, একটি স্ট্রিংয়ের দৈর্ঘ্য পাওয়া অনুকূলিত।
    if (length $str)স্ট্রিংটি খালি নেই তা যাচাই করার একটি ভাল উপায়।

  2. যদি আপনি এমন কোনও পরিস্থিতিতে থাকেন যেখানে আপনি ইতিমধ্যে রক্ষা করেন নি undef, তবে সতর্কতা অবলম্বন করবে না এমন "খালি নয়" এর ক্যাচ-অল if (defined $str and length $str)


7
আমি মনে করি যে দৈর্ঘ্যটি আমাদের নিকটতম পরীক্ষা যা এই ধারণার মত প্রকাশের যে আমাদের কাছে স্ট্রিংয়ের কিছুই নেই।
ব্রায়ান ডি বন্ধু

6
আপভোটেড কারণ if (length($str))একটি দুর্দান্ত পদ্ধতির এবং ভেরিয়েবল সংজ্ঞায়িত না হলে ব্যর্থ হয় না।
বেসিক 6

10

আপনি সম্ভবত "==" এর পরিবর্তে "eq" ব্যবহার করতে চান। আপনি যদি কিছু প্রান্তের মামলা সম্পর্কে উদ্বিগ্ন হন তবে আপনি অপরিজ্ঞাত জন্যও পরীক্ষা করতে চাইতে পারেন:

if (not defined $str) {

# this variable is undefined

}

4
আপনি 0 টি উপাদান থাকতে পারে এমন একটি অ্যারে স্থানান্তরিত করে স্ট্রিংটি পেয়ে গেলে খুব দরকারী।
ডাকাভ

9

বেশ কিছু লোক ইতিমধ্যে উল্লিখিত হিসাবে, eqএখানে সঠিক অপারেটর।

আপনি use warnings;যদি আপনার স্ক্রিপ্টে থাকেন তবে আপনি (এবং অন্যান্য অনেক দরকারী জিনিস) সম্পর্কে সতর্কতা পাবেন; আমিও সুপারিশ করব use strict;


+1 শীতল, হ্যাঁ আমি সাধারণত ব্যবহার করি use strictতবে আমি কিছু পুরানো কোড আপডেট করছি তাই আমি যখন এটি যুক্ত করি তখন কয়েকশ ত্রুটি পাই। আমি সম্ভবত তাদের কোনও দিন ঠিক করব।
নিক বোলটন

4

সিপিএএন ব্যবহার ব্যতীত যে কোনও কিছু করার "সঠিক" উপায়ের ধারণাটি পার্লের অস্তিত্বহীন।

যাইহোক এগুলি সংখ্যক অপারেটর, আপনার ব্যবহার করা উচিত

if($foo eq "")

বা

if(length($foo) == 0)

4
এটা সত্য যে পার্ল সমস্যা সমাধানের দিকে "এক সত্য পথে" উকিল করার ঝোঁক রাখে না, তবে এর অর্থ এই নয় যে সেখানে প্রচ্ছন্নভাবে পছন্দসই প্রতিমা এবং শৈলী এবং পন্থা নেই। এছাড়াও, পার্ল নিয়ামকগুলির মধ্যে যেহেতু অনেকগুলি বলতে পছন্দ করে, যদিও কাজ করার একাধিক উপায় থাকলেও কিছু করার কিছু উপায় সত্যিই খারাপ (বোকা, খারাপ পরামর্শ দেওয়া, কঠোরভাবে বজায় রাখা ইত্যাদি), ।)
টেলিমাচাস

4
এটি করার জন্য অনেকগুলি উপায় রয়েছে বলে এর অর্থ এই নয় যে সমস্ত উপায় সমান। ব্যবহার খালি স্ট্রিং জন্য টেস্টিং if ($foo == ""), উদাহরণস্বরূপ, হয় নিশ্চিতভাবেই ভুল যদি না আপনি আসলে কিনা পরীক্ষা হওয়ার অর্থ $foo(যা ক্ষেত্রে এটি হবে, সাংখ্যিক প্রেক্ষাপটে মূল্যায়ন, 0 একটি মান আছে এখনও ভাল হিসেবে লেখা যেতে if ($foo == 0), যেমন যে আরও স্পষ্টভাবে প্রকাশ আপনার অভিপ্রায়)।
ডেভ শেরোহমান

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