[ruby] 괄호를 사용하면 블록 인수에 전달한 배열 중첩을 확장할 수 있습니다.
결론
블록의 인수로 다음과 같은 배열을 확장하려는 경우,
인수를 ()로 묶어 확장 할 수 있습니다.
※1계층만
arr = [["hoge"], ["bar"], "foo"]
arr.each { |(ele)|
puts ele.length
}
다만 개인적으로는
flatten으로 쓰는 것이 나중에 검토 할 때 좋다고 생각합니다
비교
test.rb
#!/bin/ruby
arr = [["hoge"], ["bar"], "foo"]
arr.each { |ele|
puts ele.length
puts ele.class
}
puts '---'
arr.each { |(ele)|
puts ele.length
puts ele.class
}
실행해 보겠습니다.
$ ruby test.rb
1
Array
1
Array
3
String
---
4
String
3
String
3
String
덧붙여 차원이 1개 내려갈 뿐이므로, 중첩의 중첩 같은 것은 전개할 수 없는 것 같습니다.
test2.rb
#!/bin/ruby
arr = [["hoge"], ["bar"], "foo", [["piyo"]]]
arr.each { |(ele)|
puts ele.length
puts ele.class
}
$ ruby test2.rb
4
String
3
String
3
String
1
Array
단, 개인적으로는 이해하기 어려운 점과,
나 자신도 구조도 이해할 수 없는 점,
몇 계층까지 전개할지 지정할 수 있는 점을 고려하면 flatten
배열을 평탄화하는 방법을 사용하는 것이 더 좋을 것이라고 생각합니다.
cf. htps : // / cs. 루 by ぁん g. 오 rg/그럼/2. HTML
test3.rb
#!/bin/ruby
arr = [["hoge"], ["bar"], "foo", [["piyo"]]].flatten(1)
arr.each { |ele|
puts ele.length
puts ele.class
}
$ ruby test3.rb
4
String
3
String
3
String
1
Array
경위
다음 문제를 해결한 후 다른 사람의 답변을 보고 있던 곳
이번 글을 찾았다
htps // 유키코에서 r. 메/p로 b㎇ms/의/345
Reference
이 문제에 관하여([ruby] 괄호를 사용하면 블록 인수에 전달한 배열 중첩을 확장할 수 있습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mesh1nek0x0/items/408977c488a4c7b8e6e4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)