في روبي ، هل يمكنني تقييد كمية الحفر أسفل كائن عند عرض نفسه في IRB أو عند استخدام .inspect؟

StackOverflow https://stackoverflow.com/questions/4099651

  •  29-09-2019
  •  | 
  •  

سؤال

أنا أكتب فصلًا لحل ألغاز Sudoku التي لديها بعض المصفوفات ثنائية الأبعاد تحتوي على مؤشرات ل Cells هذه النقطة العودة إلى هذه المصفوفات ثنائي الأبعاد. شيء من هذا القبيل:

def class Sudoku
  attr :rows, :columns, :blocks

  def initialize
    # build each of the rows, columns, and blocks with a 9x9 map of Cells
  end
end

def class Cell
  attr :value, :row, :column, :block

  def initialize(row, column, block, value)
    # set each pointer to its parent row, column and block etc
  end
end

المشكلة هي أنه عندما أفعل شيئًا مثل:

p = Puzzle.new

في irb, ، IRB يتجمد. لقد قمت بتعديل بعض التعليمات البرمجية الآن حتى لا تفعل ذلك ولكن الآن إذا فعلت:

irb> p.rows
=> TONS OF SHIT GETS RETURNED

يخرج طن وأطنان من المؤشرات المتداخلة ويستغرق حوالي 20 ثانية للعودة إلى irb مستعجل. الكثير من هذا يتعلق ببعض المؤشرات اللانهائية أي:

p.rows[0][0].row[0].row[0].row[0]....

لذلك أنا أتساءل عما إذا كانت هناك طريقة لروبي لإعادة تمثيل ضحل لهذه الصفيف لأن جميع مؤشراتها تنتهي في نهاية المطاف إلى أن يعود إلى نفسها.

هل كانت مفيدة؟

المحلول

إعادة تعريف الفحص في اللغز وعرض فقط ما تريد.

فمثلا:

def inspect
  "Puzzle with size #{rows.size}"
end
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top