Bence şanstan yoksun, 1.8'i desteklemek istiyorsanız, =>
'u kullanmalısınız. Her zamanki gibi, sana 1.9 de bazı durumlarda =>
kullanması gerektiğini belirtilecek:
- anahtar sembolü değilse. Herhangi bir nesnenin (semboller, dizgiler, sınıflar, yüzer, ...) Ruby Hash içinde bir anahtar olabileceğini unutmayın.
- Alıntı yapacak bir simgeye ihtiyacınız varsa:
:'this.that'
.
- Eğer hemen hemen her şey için MongoDB kullanırsanız
:$set => hash
gibi şeyler kullanacaksınız ama $set: hash
bir sözdizimi hatası.
Düzenli olarak programlanmış programlamaya geri dönün.
Neden şanssız olduğunuzu söylüyorum? Hash sözdizimi sözdizimleri (her ikisi de) ayrıştırıcıda sabitlenmiştir ve ayrıştırıcıyı mücevherinizden çok fazla şansa sahip olacağınızı düşünmüyorum. Ruby 1.8.7's parse.y
bu konuda şöyle demektedir:
assoc : arg_value tASSOC arg_value
{
$$ = list_append(NEW_LIST($1), $3);
}
;
ve tASSOC
=>
böylece karma değişmezleri sert kablolu =>
kullanmak olmasıdır.
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);
%*/
}
;
Biz yine yağ ok sözdizimi (arg_value tASSOC arg_value
) ve JavaScript stili (tLABEL arg_value
) var;: 1.9.3's bu diyor AFAIK, tLABEL
, JavaScript stili sözdizimi ile hangi türden sembollerin (:$set
, no :'this.that'
, ...) kullanılabileceğine dair kısıtlamaların kaynağıdır. Mevcut durum parse.y
, Hash hazırlıkları için 1.9.3 ile eşleşiyor.
Bu nedenle, Hash'ın sözdizimi sözdizimi ayrıştırıcıya bağlanır ve 1.8'i desteklemek istiyorsanız yağ oklarıyla takılırsınız.
Yakut 1.8 yakında sönmeye başlayacak. Bunun için desteğe ihtiyacınız yok. – sawa
Bu popüler bir fikir mi? Kesinlikle diğer Gem yazarlarının neler yaptığı üzerine girdim. Ruby topluluğunda 1.9 herkese ulaşmak için büyük bir itici güç olduğunu biliyorum. Kişisel olarak, 1.8'i geride bıraktığımı düşünmüyorum. – JackCA