제목에 대해 유감스럽게도이 구문이 어떻게 호출되는지 알 수 없습니다. 예를 들어이 코드가 루비 1.9에서 컴파일되지 않고 루비 1.8에서 컴파일되는 이유는 무엇입니까?
:
ary = [ [11, [1]], [22, [2, 2]], [33, [3, 3, 3]] ]
# want to get [ [11, 1], [22, 2], [33, 3] ]
루비 1.8
ary.map{|x, (y,)| [x, y] }
#=> [[11, 1], [22, 2], [33, 3]]
ary.map{|x, (y)| [x, y] }
#Syntax error, unexpected '|', expecting tCOLON2 or '[' or '.'
#ary.map{|x, (y)| [x, y] }
# ^
루비 1.9
ary.map{|x, (y,)| [x, y] }
#SyntaxError: (irb):95: syntax error, unexpected ')'
#ary.map{|x, (y,)| [x, y] }
# ^
ary.map{|x, (y)| [x, y] }
#=> [[11, 1], [22, 2], [33, 3]]
※ 내가 원하는 배열을 얻을 수있는 방법을 요구하고 있지 않다.
나는이 코드가 Ruby 버전 중 하나이지만 둘 다이 아닌 이유를 알고 싶습니다. 을 알고 싶습니다.
, 그것은 사라 규칙의 어떤 종류가 있었다 의미합니까? – oldergod
문제가 너무 많이 필요하다고 생각하지 않습니다. 전체 블록 인수 의미론은 1.9에서 대대적 인 개편을 받았습니다. 기본 옵션과'* args' 타입의 catch-alls 옵션 인자가 지원됩니다. 하나의 항목으로 목록을 허용하지 않지만 두 번째 항목이 실제로 명명 된 경우 신경 쓰지 않는이 기발한 동작은 제거 된 것처럼 보입니다. – tadman