ruby - প্রতিটি জন্য রুবি মধ্যে স্বয়ংক্রিয় পাল্টা?




syntax (6)

Blahs যদি একটি শ্রেণী যা সংখ্যাসূচকতে মিশ্রিত হয়, আপনি এটি করতে সক্ষম হবেন:

blahs.each_with_index do |blah, i|
  puts("#{i} #{blah}")
end

আমি প্রতিটি এবং একটি পাল্টা ব্যবহার করতে চান:

i=0
for blah in blahs
    puts i.to_s + " " + blah
    i+=1
end

এটা করতে একটি ভাল উপায় আছে কি?

দ্রষ্টব্য: blahs কোন অ্যারে বা হ্যাশ কিনা তা আমি জানি না, তবে blahs[i] করতে হলে blahs[i] এটিকে বেশি যৌনকর্মী করে তুলব না। এছাড়াও আমি রুবিতে i++ লিখতে i++ চাই।

টেকনিক্যালি, ম্যাটস এবং স্কুইয়ের উত্তর প্রথমে এসেছিল, কিন্তু আমি পারদোজের সেরা উত্তর দিচ্ছি তাই এসও এ বিন্দুগুলির চারদিকে ছড়িয়ে পড়ে। এছাড়াও তার উত্তরের সংস্করণ সম্পর্কে নোট ছিল, যা এখনও প্রাসঙ্গিক (যতক্ষণ আমার উবুন্টু 8.04 রবি 1.8.6 ব্যবহার করছে)।

ব্যবহার করা উচিত puts "#{i} #{blah}" যা অনেক বেশি সংক্ষিপ্ত।


আপনি প্রতিটি জন্য রুবি সূচক পেতে চান, তাহলে আপনি ব্যবহার করতে পারেন

.each_with_index

কিভাবে .each_with_index কীভাবে কাজ করে তা দেখানোর জন্য এখানে একটি উদাহরণ দেওয়া হল:

range = ('a'..'z').to_a
length = range.length - 1
range.each_with_index do |letter, index|
    print letter + " "
    if index == length
        puts "You are at last item"
    end
end

এটি মুদ্রণ করবে

a b c d e f g h i j k l m n o p q r s t u v w x y z You are at last item

যদি আপনার each_with_index এর নতুন সংস্করণ না থাকে তবে আপনি উপাদানের সাথে সূচী জোড়া করতে zip পদ্ধতিটি ব্যবহার করতে পারেন:

blahs = %w{one two three four five}
puts (1..blahs.length).zip(blahs).map{|pair|'%s %s' % pair}

যা উত্পাদন করে:

1 one
2 two
3 three
4 four
5 five

হ্যাঁ, এটি collection.each প্রতিটি লুপ করতে এবং তারপর each_with_index সূচী পেতে।

আপনি সম্ভবত একটি রুবি বই পড়তে হবে কারণ এটি মূল রুবি এবং যদি আপনি এটি না জানেন তবে আপনি বড় সমস্যায় পড়বেন (try: http://poignantguide.net/ruby/ )।

রুবি সোর্স কোড থেকে নেওয়া হয়েছে:

 hash = Hash.new
 %w(cat dog wombat).each_with_index {|item, index|
   hash[item] = index
 }
 hash   #=> {"cat"=>0, "wombat"=>2, "dog"=>1}

i++ করার বিষয়ে আপনার প্রশ্ন হিসাবে, ভাল, আপনি রুবিতে এটি করতে পারবেন না। i += 1 বিবৃতিটি আপনাকে ঠিক কীভাবে আপনি এটি করতে অনুমিত করেছেন।


[:a, :b, :c].each_with_index do |item, i|
  puts "index: #{i}, item: #{item}"
end

আপনি জন্য এই কাজ করতে পারেন না। আমি সাধারণত যাই হোক না কেন প্রতিটি ব্যক্তিগতভাবে আরো ঘোষণামূলক কল চাই। আংশিক কারণ এটি সিনট্যাক্সের সীমাটি হিট করার সময় অন্য ফর্মগুলিতে রূপান্তরের পক্ষে সহজ।







syntax