나는 당신이 운이 좋다면 1.8을 지원하기를 원한다면 =>
을 써야한다고 생각합니다. 평소와 같이, 나는 당신이 1.9에서 어떤 경우에 =>
를 사용해야 언급합니다 :
- 을 키 기호가 아닌 경우. 어떤 객체 (기호, 문자열, 클래스, 수레, ...)도 루비 해시의 키가 될 수 있습니다.
- 인용 할 기호가 필요한 경우 :
:'this.that'
.
- MongoDB를 꽤 많이 사용한다면
:$set => hash
이나 $set: hash
과 같은 것을 사용할 것입니다. 구문 오류입니다.
정기적으로 프로그래밍되는 프로그래밍으로 돌아갑니다.
왜 나는 운이 없다고 말합니까? 해시 리터럴 구문 (둘 다)은 파서에 하드 배선되어 있으며 파서를 사용자의 보석에서 패치하는 것은별로 행운이 없다고 생각합니다. Ruby 1.8.7's parse.y
이 말을 가지고
assoc : arg_value tASSOC arg_value
{
$$ = list_append(NEW_LIST($1), $3);
}
;
및 tASSOC
는 =>
때문에 해시 리터럴은 하드 유선 =>
를 사용할 수있는 것입니다.
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
)와 자바 스크립트 스타일 (tLABEL arg_value
)가; 1.9.3's이 말한다 AFAIK, tLABEL
은 또한 JavaScript 스타일 구문과 함께 어떤 종류의 기호 (:$set
, 아니 :'this.that'
, ...)도 사용할 수없는 제한 사항의 근원입니다. 현재 트렁크 parse.y
은 해시 리터럴에 대해 1.9.3과 일치합니다.
그래서 해시 리터럴 구문은 파서에 하드 와이어되어 1.8을 지원하려면 굵은 화살표가 붙어 있습니다.
Ruby 1.8이 곧 사라질 것입니다. 당신은 그것을지지 할 필요가 없습니다. – sawa
그것은 대중적인 의견입니까? 나는 확실히 다른 보석 제작자들이하고있는 것에 대한 의견을 찾고있다. Ruby 커뮤니티에서 1.9 열차를 모두 사용하게하는 큰 힘이 있다는 것을 알고 있습니다. 나는 개인적으로 1.8을 남겨두고 신경 쓰지 않는다. – JackCA