簡體   English   中英

如果條件不存在,則跳過第一個“每個”運算符

[英]Skip first 'each" operator if condition does not exists

我有 2 個操作員,一個在另一個里面

first_array.each do |index, values_1|
   second_array.each do |index, values_2|
      # --some action goes here--
   end
end

如果first_arraynil first_array.each do |index, values_1|...是否有可能首先跳過每個語句( first_array.each do |index, values_1|... )?

這意味着如果first_arraynil ,他會省略第一條語句並只執行第二條語句:

   second_array.each do |index, values_2|
      # --some action goes here--
   end

為您的first_array分配一個默認值,其中包含您希望作為indexvalues_1傳遞的元素。

first_array ||= [[nil, nil]] # assign a default value if falsy
first_array.each do |index, values_1|
  # ...
end

以上將執行first_array的內容一次,如果first_arraynil (或false ),則使用給定的默認值。

如果您不想為first_array分配默認值, first_array使用(first_array || [[nil, nil]]).each代替。

感謝您建議Stefan 更新答案以適應問題編輯。

一種不為first_array分配默認值的first_array

final_array = second_array

final_array = first_array.each_with_object([]) do |ele_from_first_array, result|
  second_array.each { |ele_from_second_array| result << ele_from_second_array + [ele_from_first_array[1]] }
end if first_array.present?

final_array.each do |sa_i, sa_v, fa_v|
  # fa_v will be nil if first_array is nil

  # Your code
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM