দুটি ভেরিয়েবল তুলনা

Am I comparing the pipe symbols |x| & |f| correctly below ?

| | চ একটি dir নাম অনুরূপ | এক্স | একটি ফাইলের নাম অনুসারে

  Dir.foreach(@sortedFilesDir) do
  |f|
    @fileArray.each() {
      |x| 
      if(x.match(/^#{f}/))
        puts "match - "+x+","+f
      end
    }
  end
1

2 উত্তর

আমি কয়েকটি পরিবর্তন করেছি:

  1. I made the variable names more informative
  2. I replaced the regular expression with String#start_with?
  3. I made the code more functional-programming than imperative programming, by replacing two eachs with a map and a find.
  4. I used "#{expression}" rather than "match - "+x+","+f

আমি এটা কাজ করে, যদিও চেক না।

directory_names = Dir.foreach(@sorted_files_dir)
matching_directory_names = @file_array.map do |filename|
  directory_names.find do |directory_name|
    filename.start_with?("/" + filename + "/")
  end
end
@file_array.zip(matching_directory_names) do |filename, matching_directory_name|
  next if matching_directory_name.nil?
  puts "match - #{filename},#{matching_directory_name}"
end

আমি আশা করি directory_names লুপ চালানোর সময় প্রতিবার গণনা করা হবে না! যদি এটি হয় তবে স্ক্রিপ্টের শুরুতে আপনি ডিরেক্টরি_নাম = Dir.foreach (@orted_files_dir) .to_a চান।

1
যোগ

আপনার ব্লকটি 1 লাইনের বেশি হলে do | var | নোটেশনটি ব্যবহার করে এটি সাধারণ কনভেনশন। যদি এটি 1 লাইন হয় তবে {| var |} সিনট্যাক্স ব্যবহার করুন।

কম পদ্ধতি ব্যবহার করে স্ট্রিং ইন্টারপোলেশন কনক্যাটেনেশনের জন্যও পছন্দসই।

আরেকটি কনভেনশন হল যে আপনার পদ্ধতি যদি আর্গুমেন্ট না নেয় তবে শেষে বন্ধনীগুলি ব্যবহার করবেন না। (আপনি আপনার প্রতিটি পদ্ধতিতে সম্পন্ন করেছেন)

Also, in the ruby world, we usually underscore_our_variable_names instead of camelCasing them. The exception being Constants (including class names) e.g. MyClass or ThisIsOneOfMyConstants

 Dir.foreach(@sorted_files) do |f|
    @file_array.each do |x| 
      if(x.match(/^#{f}/))
        puts "match - #{x},#{f}"
      end
    end
  end

আপনি যদি সঠিকভাবে আপনার @file_array এ একটি এন্ট্রির সাথে মেলে এমন নির্দিষ্ট ডিরেক্টরির মধ্যে ফাইলগুলি তালিকাবদ্ধ করতে চান তবে সেগুলি সঠিকভাবে ব্যবহার করছেন।

1
যোগ