簡體   English   中英

在紅寶石中一步展平陣列

[英]One-step flattening of an array in ruby

我正在使用代碼變量進行此練習 ,這是為了展平一個數組(最多一層深),例如,我想得到輸出:

[1,2,3] >> [1,2,3]

[[1,2],3] >> [1,2,3]

[[1,[2]],3] >> [1,[2],3]

我決定使用“inject” - 如果該元素是一個數組,則將下一個元素添加到運行總計中,如果不是,則將其推送到:

def flatten(array)
  array.inject([]) {|result,element| element.kind_of?(Array) result.concat(element) : result<<element}
end

任何人都可以幫助解釋為什么我得到以下語法錯誤?

-e:3: syntax error, unexpected tIDENTIFIER, expecting '}'
... element.kind_of?(Array) result.concat(element) : result<

你錯過了一個錯誤? 在三元聲明中:

element.kind_of?(Array) ? result.concat(element) : result<<element

為了您的目標,您可以使用帶有參數的Array#flatten

array.flatten(1)
[[1,2],3].flatten(1)
=> [1, 2, 3]
[[1,[2]],3].flatten(1)
=> [1, [2], 3]

暫無
暫無

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

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