簡體   English   中英

如何在ruby中從多行塊寫入單行?

[英]How to write single-line from multi-line blocks in ruby?

我正在嘗試為數組(@controller)中的每個實體編寫單行塊,並且該單個塊的目的是從控制器數組中產生[n]元素,n是訪問器,現在我想到了類似的東西:

def for_controller
 controller = @controllers.first[n] 
 yield controller
end

不幸的是,我編寫的單個代碼塊不起作用,但是下面的多行代碼塊在循環中運行良好。

def for_all_controllers
  @controllers.each do |controller|
    yield controller
  end
end

為了使問題更清楚:

@controllers[0] should yield => something_1
@controllers[1] should yield => something_2
@controllers[n] should yield => something_(n+1)

我該如何工作?

是您要找的東西嗎?

def for_controller
 yield @controllers[n]
end

您的示例代碼看起來像是錯誤的。

@controllers.first[n]

這從Array中獲取第n個元素,該元素由@controller.first返回。

但在您的問題中,您說:

從控制器數組產生[n]元素

我認為您期望的是數據結構(a),而不是(b)。

(a)
@controllers = [
  'something',    # <= @controller.first returns this element, as you expected
  'something',
  'something'
]

(b)
@controller = [
  ['something', 'something', 'something'],
  ['something', 'something', 'something'],
  ['something', 'something', 'something']
]

我認為您應該嘗試以下方法:

@controllers.first(n)

它從@controller返回前n個元素。 是您期望的結果,對嗎?

暫無
暫無

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

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