আমার একটি রয়েছে map
যা হয় কোনও মান পরিবর্তন করে বা এটি শূন্য করে দেয়। আমি তখন তালিকা থেকে নীল এন্ট্রিগুলি সরাতে চাই। তালিকাটি রাখার দরকার নেই।
আমার কাছে বর্তমানে এটি রয়েছে:
# A simple example function, which returns a value or nil
def transform(n)
rand > 0.5 ? n * 10 : nil }
end
items.map! { |x| transform(x) } # [1, 2, 3, 4, 5] => [10, nil, 30, 40, nil]
items.reject! { |x| x.nil? } # [10, nil, 30, 40, nil] => [10, 30, 40]
আমি সচেতন আমি একটি লুপ করতে পারি এবং শর্তসাপেক্ষে এই জাতীয় অন্য অ্যারেতে সংগ্রহ করতে পারি:
new_items = []
items.each do |x|
x = transform(x)
new_items.append(x) unless x.nil?
end
items = new_items
তবে এটিকে অদ্ভুত বলে মনে হচ্ছে না। তালিকার উপরে কোনও ফাংশন মানচিত্র করার, নীলগুলি আপনি যাওয়ার সাথে সাথে সরিয়ে / বাদ দিয়ে কি কোনও দুর্দান্ত উপায় আছে?
filter_map
যা এটি এর জন্য নিখুঁত বলে মনে হয়। অ্যারে পুনরায় প্রক্রিয়া করার প্রয়োজনীয়তা সংরক্ষণ করে পরিবর্তে এটি প্রথমবারের মতো কাঙ্ক্ষিত হয়ে ওঠে। আরও তথ্য এখানে।