지원하는 루비 1.9 의 해쉬문에 루비 1.8
-
13-12-2019 - |
문제
쓰고 있어요 루비 보석을 사용하여 {key: 'value'}
에 대한 구문을 해시에 걸쳐 나의 코드입니다.내 모든 테스트에 통과 1.9.x 지만,나는(당연하게도)을 얻 syntax error, unexpected ':', expecting ')'
에 1.8.7.
이 있는 최상의 방법을 지원하 1.8.x?해야 합니까 다시 작성하는 코드를 사용하여 우리의 오래된 친구 =>
, 거나,더 나은 전략?
해결책
내가 생각하는 당신의 행운을하려는 경우 지원이 1.8 다음 사용 =>
.평소대로 나는 언급을 사용해야 합니다 =>
에서는 특정한 경우에 1.9:
- 키가 있는 경우에는 상징이되지 않습니다.을 기억하는 모든 개체(기호,문자열,수업,수레,...)는 열쇠가 될 수 있습에서 Ruby 해시입니다.
- 필요할 경우 상징하는 견적:
:'this.that'
. - 당신이 사용하는 경우 MongoDB 도 될 것 같은 것들을 사용하여
:$set => hash
지$set: hash
구문 오류가 있습니다.
다시 우리의 정기적 프로그래밍입니다.
왜 말을 하는 당신은 운?해쉬 리터럴 구문(그들 모두)는 유선에서 내가 생각하지 않는 당신이 많은 행운 패치 파서에서 당신의 보석입니다. 루비 1.8.7 의 parse.y
할 말이 있다:
assoc : arg_value tASSOC arg_value
{
$$ = list_append(NEW_LIST($1), $3);
}
;
고 tASSOC
가 =>
그래서 해쉬 리터럴드-유선을 사용하여 =>
. 1.9.3 의 이 말
assoc : arg_value tASSOC arg_value
{
/*%%%*/
$$ = list_append(NEW_LIST($1), $3);
/*%
$$ = dispatch2(assoc_new, $1, $3);
%*/
}
| tLABEL arg_value
{
/*%%%*/
$$ = list_append(NEW_LIST(NEW_LIT(ID2SYM($1))), $2);
/*%
$$ = dispatch2(assoc_new, $1, $2);
%*/
}
;
우리는 지방-화살표 구문을 다시(arg_value tASSOC arg_value
다)및 JavaScript 스타일(tLABEL arg_value
);AFAIK, tLABEL
도의 원본에 대한 제한의 어떤 종류의 기호(없음 :$set
, 없음 :'this.that'
,...)과 함께 사용할 수 있는 자바스크립트 스타일문입니다.현재 트렁크 parse.y
경기 1.9.3 에 대한 해쉬 리터럴이 있습니다.
그래서 해쉬 리터럴 구문은 유선으로서 당신이 갇혀 지방과 화살하려는 경우 지원이 1.8.