Ruby finden, der nächste in der Reihe

Gibt es trotzdem, um das nächste Element in einem Ruby-Array?

Code:

# Find ALL languages
if !debug
  lang = Language.all
else
  lang = Language.where("id = ? OR id = ?", 22, 32)
end

# Get all elements
elements = Element.where("human_readable IS NOT NULL")

lang.each do |l|
  code = l.code.downcase
  if File.exists?(file_path + code + ".yml")
    File.delete(file_path + code + ".yml")
  end

  t1 = Time.now

  info = {}
  elements.each do |el|
    unless l.id == 1
      et = el.element_translations.where("language_id = ? AND complete = ?", l.id, true)
    else
      et = el.element_translations.where("language_id = ?", 1)
    end
    et.each do |tran|
      info[code] ||= {}
      info[code][el.human_readable] = tran.content.gsub("\n", "").force_encoding("UTF-8").encode!
    end
  end
  File.open(file_path + code + ".yml", "w", :encoding => "UTF-8") do |f|
    if f.write(info.to_yaml)
      t2 = Time.now

      puts code + ".yml File written"
      puts "It took " + time_diff_milli(t1, t2).to_s + " seconds to complete"
      # This is where I want to display the next item in the lang array
      puts lang.shift(1).inspect
      puts "*"*50
    end
  end
end
  • Weiter nach was?
  • arbeiten Code ist oben
  • Hüten Sie sich vor puts lang.shift(1).inspect mit, dass in einem block eine Iteration über lang dazu führen, dass einige Probleme. Dann wieder, ist es vielleicht nicht.
  • -1 für eine unverständliche Frage. Nicht nur dump code auf uns und erwarten von uns, es zu beheben. Legen Sie einige Mühe in das schreiben Ihrer Frage.
  • Ich habe nicht nur "dump" - code auf jeder... ich war einfach nur eine Frage... der code oben war zu zeigen, die Arbeit, die ich getan hatte, im Falle jemand benötigt, um diese zu referenzieren.
  • Ich denke das problem ist, die Frage scheint so einfach es ist schwer zu akzeptieren, dass Sie tatsächlich gefragt, was wir denken, werden Sie gefragt, d.h. bestimmte Element x am index i wie Lesen Sie das Element y i+1. Wenn ja, dann x = array[i] und y = array[i+1]. Das ist nicht einmal die Programmierung 101, es ist die Programmierung kindergarten, so dass wir uns nicht vorstellen können ist dies, was Sie Fragen. Dies soll nicht beleidigen, sondern um zu klären.
  • Auch in deinem code immer verwenden Sie aussagekräftige Variablennamen. Es macht keinen Sinn, einzelne Buchstaben und in der Tat ist schlechter Programmierstil. Nehmen Sie eine zusätzliche 500 Millisekunden, um die geben Sie eine vollständige Wort-und du wirst danken, die sich drei Monate später, wenn Sie zurück gehen um einen Fehler zu beheben in Ihrem code.
  • Wo in dem Beispiel-code haben Sie versucht,, um das nächste element in einem array? Entfernen Sie die nicht benötigten Sachen und zeigen ein prägnantes Beispiel für das problem.

Schreibe einen Kommentar