রুবি: একটি পরিসীমা জুড়ে পুনরুক্তি করা যায়, তবে সেট ইনক্রিমেন্টে?


156

সুতরাং আমি যেমন একটি পরিসীমা উপর পুনরাবৃত্তি করছি:

(1..100).each do |n|
    # n = 1
    # n = 2
    # n = 3
    # n = 4
    # n = 5
end

তবে আমি যা করতে চাই তা 10 এর দ্বারা পুনরাবৃত্তি হয়।

সুতরাং n1 দ্বারা বাড়ার স্থলে , পরবর্তীটি nআসলে 10, তারপরে 20, 30 ইত্যাদি হবে etc.



@ ডিগোডিয়াস তবে এটি সর্বোত্তম এবং তারপরে এই থ্রেডটি রয়েছে
জ্যাকসন জাগাথেসান

উত্তর:


256

সম্পূর্ণ API এর জন্য http://ruby-doc.org/core/classes/Range.html#M000695 দেখুন ।

মূলত আপনি step()পদ্ধতিটি ব্যবহার করেন । উদাহরণ স্বরূপ:

(10..100).step(10) do |n|
    # n = 10
    # n = 20
    # n = 30
    # ...
end

12
এই উত্তরটি আমাকে কি আমি খুঁজছেন ছিল নেতৃত্বে ... আপনি দুই বার থাকে, তাহলে আপনি কি করতে পারেন(time1..time2).step(15.minutes) do |time|
daybreaker

12

আপনি ব্যবহার করতে পারেন Numeric#step

0.step(30,5) do |num|
  puts "number is #{num}"
end
# >> number is 0
# >> number is 5
# >> number is 10
# >> number is 15
# >> number is 20
# >> number is 25
# >> number is 30

6

এটি করার আরও একটি উপায় সম্ভবত এখানে রয়েছে:

for i in (0..10).step(2) do
    puts i
end

10
দুঃখিত, তবে রুবি স্টাইল গাইডটি দৃ the়ভাবে ব্যবহারের forলুপগুলিকে নিরুৎসাহিত করে ।
দার্ট এগারিজিয়াস

@ দার্থএগ্রিজিয়াস কেন?
ডগ

এটি দর্শনের একটি এক্সটেনশন যে প্রতিটি জিনিসই একটি বস্তু এবং প্রতিটি ক্রিয়া একটি পদ্ধতি কল। সুতরাং লুপিংয়ের জন্য অন্তর্নির্মিত forব্যবহার না করে আপনার eachপদ্ধতিটি ব্যবহার করা উচিত ।
দার্ট এগারিজিয়াস

5
rng.step(n=1) {| obj | block } => rng

আরএনগির উপর দিয়ে আইট্রেস করে, প্রতিটি নবম উপাদানকে ব্লকে পাস করে। যদি পরিসীমাটিতে সংখ্যা বা স্ট্রিং থাকে তবে প্রাকৃতিক ক্রম ব্যবহৃত হয়। অন্যথায় পদক্ষেপটি পরিসীমা উপাদানগুলির মাধ্যমে পুনরাবৃত্তি করতে স্যাককে অনুরোধ করে। নিম্নলিখিত কোডটি Xs শ্রেণি ব্যবহার করে, যা শ্রেণি-স্তরের ডকুমেন্টেশনে সংজ্ঞায়িত হয়।

range = Xs.new(1)..Xs.new(10)
range.step(2) {|x| puts x}
range.step(3) {|x| puts x}

সৃষ্টি করে:

1 x
3 xxx
5 xxxxx
7 xxxxxxx
9 xxxxxxxxx
1 x
4 xxxx
7 xxxxxxx
10 xxxxxxxxxx

তথ্যসূত্র: http://ruby-doc.org/core/classes/Range.html

......

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