অজগরের মতো আর কি কি দৃ as় বক্তব্য রাখে?


100

একটি বিবৃতি যা কিছু সত্য কিনা এবং যদি প্রদত্ত ত্রুটি বার্তাটি প্রিন্ট করে না এবং প্রস্থান করে তা পরীক্ষা করে

উত্তর:


123

stopifnot()

আপনি ইউনিট পরীক্ষার জন্য রানিট এবং টেস্টথের মতো প্যাকেজগুলিতেও আগ্রহী হতে পারেন ।


স্টিফনোট () বন্ধ হয়ে গেলে কি ত্রুটি বার্তা নিয়ন্ত্রণের কোনও উপায় আছে?
নিক

13
@ নিক, না stopifnot()বৈধতা পরীক্ষার জন্য ব্যবহার করুন , কোডটি যা করছিল তা যা করছে তা if (blahdiblah) stop("error message")পরীক্ষা করার জন্য , তবে ইনপুট পরীক্ষার জন্য, প্রোগ্রামটির ইনপুটটি বৈধ কিনা তা পরীক্ষা করে। সাধারণ ব্যবহারের সময় কেবলমাত্র দ্বিতীয়টি হওয়া উচিত।
হারলান

6
হ্যাডলির নতুন assertthatপ্যাকেজটিও দেখুন, যা এর চেয়ে আরও ভাল উত্তর stopifnotদেয়: github.com/hadley/assertthat
হারলান

12

@ নিক:

আপনি যদি আপনার প্রোগ্রামটিতে ত্রুটি ছুঁড়ে দেবে এমন শর্তটি পরীক্ষা করতে বর্ণনামূলক নামের সাথে কোনও ফাংশন লিখেন তবে আপনি নিজের ত্রুটি বার্তাটি নিয়ন্ত্রণ করতে পারেন। এখানে একটি উদাহরণ:

Less_Than_8 = function(x) return(x < 8)

for (i in 1:10)
{
  print(i)
  stopifnot(Less_Than_8(i))
}

এটি 1 থেকে 8 নম্বর মুদ্রণ করবে, তারপরে একটি বার্তা মুদ্রণ করবে says

Error: Less_Than_8(i) is not TRUE

যদি বন্ধনীর "i" পরীক্ষায় ব্যর্থ হয় এমন মান দিয়ে প্রতিস্থাপন করা হয় তবে আপনি যা প্রদান করেন তা পেলে ভাল লাগবে।

আপনার যদি এর চেয়ে বেশি কল্পিত কিছু প্রয়োজন হয়, হারলানের পরামর্শ অনুসারে রুনিট এবং টেস্টথটি দেখুন।


আপনি কেবল ভিতরে ফাংশন সংজ্ঞা রাখতে পারেন stopifnot()
nnot101

4
পরীক্ষা না করা, নামযুক্ত ফাংশনে পরীক্ষা করার বিষয়টি হ'ল ত্রুটির বার্তায় পরীক্ষার নাম মুদ্রিত করা
ম্যাথু

5

stopকমান্ড দিয়ে এটি অর্জন করা যেতে পারে । এই কমান্ডটি একটি ক্রিয়াকলাপের কার্য সম্পাদন বন্ধ করবে এবং ত্রুটি বার্তাটি প্রিন্ট করবে। উদাহরণস্বরূপ, আমরা যদি পরিবর্তনশীল পরীক্ষা করতে পারেন somethingহয় FALSE:

if(something == FALSE){
   stop("error message to print")   
}

একইভাবে, warningকমান্ডটি একটি সতর্কতা মুদ্রণ করবে (তবে কোডটি চালানো চালিয়ে যাবে)।

if(something == FALSE){
   warning("error message to print")   
}

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

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