Jak zdefiniować tablicę anonimowych obiektów w CoffeeScript? Czy jest to w ogóle możliwe przy użyciu składni YAML?
Wiem, że posiadanie tablicy nazwanych obiektów jest dość łatwe:
items:[
item1:
name1:value1
item2:
name:value2
]
Jednak byłoby nieco trudniej, gdyby te dwa obiekty nie miały nazw
coffeescript
Preslav Rachev
źródło
źródło
Prosty - umieść sam przecinek w kolumnie niższej niż ta, w której definiujesz swoje obiekty.
Stanie się:
źródło
[
Możesz także dodać przecinek między każdym obiektem:
źródło
Myślę, że rozwiązanie z przecinkiem jest lepsze, ale pomyślałem, że dodam to dla kompletności:
źródło
Możesz zdefiniować zmienną podczas definiowania tablicy, więc brzydka odpowiedź byłaby:
To zadziała, ale możesz otrzymać ostrzeżenia o „zdefiniowanych, ale nieużywanych zmiennych (element1, element2)”. Lepszym sposobem byłoby użycie podkreślenia, zmiennej służącej do pominięcia nieużywanych zmiennych:
console.log JSON.stringify(a)
wyprodukuje to:źródło
Nie jest to odpowiedź na pytanie OP, ale na wypadek, gdybyś tu był z tego samego powodu co ja ... Jeśli masz mało Mountain Dew i użyj '=' zamiast ':', Coffeescript zmieni twoją tablicę obiektów w płaską tablicę bez błędu kompilacji:
Produkuje
Wstaw więcej Mountain Dew i zamień „=” na „:”.
źródło
Bardzo się cieszę, że po krótkiej zabawie mogę zgłosić, że mogłem to skompilować:
Z tego wynika dokładnie to, czego można się spodziewać: lista dwóch anonimowych obiektów.
źródło
Napotkałem powiązany problem i znalazłem to rozwiązanie. Jeśli chcesz mieć tablicę wielu pojedynczych obiektów k / v bez nawiasów klamrowych, po prostu wprowadź wcięcie do niektórych z nich. Wydaje się, że to załatwia sprawę.
Produkuje:
Jest to dla mnie sprzeczne z intuicją; można by pomyśleć, że spowodowałoby to utworzenie podobiektów, ale myślę, że przecinek na końcu wiersza mówi mu, aby przestał tworzyć właściwości tego obiektu.
źródło
Python
jest to mój „pierwszy język”, nie boję się użyć kilku dodatkowych nawiasów i nawiasów klamrowych. Nawet jeśli Coffeescript ich nie potrzebuje, uważam, że są pomocne. Twój drugi blok jest bardziej czytelny.Dlaczego nie:
Wciąż jest to dla mnie ogromna poprawa w porównaniu z js, bardzo łatwa do odczytania, minimalna i całkiem bezpieczna do napisania.
źródło