CoffeeScriptで匿名オブジェクトの配列を定義するにはどうすればよいですか?YAML構文を使用してこれはまったく可能ですか?
名前付きオブジェクトの配列を持つことは非常に簡単です:
items:[
item1:
name1:value1
item2:
name:value2
]
ただし、これらの2つのオブジェクトに名前がない場合は、少しトリッキーになります
CoffeeScriptで匿名オブジェクトの配列を定義するにはどうすればよいですか?YAML構文を使用してこれはまったく可能ですか?
名前付きオブジェクトの配列を持つことは非常に簡単です:
items:[
item1:
name1:value1
item2:
name:value2
]
ただし、これらの2つのオブジェクトに名前がない場合は、少しトリッキーになります
回答:
次のことはできません。
これはいくつかのトリックです:
items:[
(name:"value1")
(name:"value2")
]
別の
items:[
true && name:"value1"
true && name:"value2"
]
これが一番:
items:[
{name:"value1"}
{name:"value2"}
]
単純-オブジェクトを定義する列よりも下の列に、コンマを単独で配置します。
a = [
nameA1: valueA1
nameA2: valueA2
nameA3: valueA3
,
nameB1: valueB1
nameB2: valueB2
nameB3: valueB3
]
となります:
var a;
a = [
{
nameA1: valueA1,
nameA2: valueA2,
nameA3: valueA3
}, {
nameB1: valueB1,
nameB2: valueB2,
nameB3: valueB3
}
];
[
。..あるとして、それは十分に混乱だ、次の行の左側にあるを
配列を定義するときに変数を定義できるため、醜い答えは次のようになります。
a =
items: [
item1 =
name: 'value1'
item2 =
name: 'value2'
]
機能しますが、「定義されているが使用されていない変数(item1、item2)」に関する警告が表示される場合があります。より良い方法は、使用されていない変数を省略するために使用されるアンダースコア、変数を使用することです:
a =
items: [
_ =
name: 'value1'
_ =
name: 'value2'
]
console.log JSON.stringify(a)
これを生成します:
{
"items":[
{
"name":"value1"
},{
"name":"value2"
}
]
}
これを適切にコンパイルできるように少し手を加えた後、私は非常に満足しています:
items: [
nameA: subA
nameB: subB
,
nameX: subX
nameY: subY
]
それはあなたが期待するとおりの結果になります:2つの匿名オブジェクトのリスト。
私は関連する問題に遭遇し、この解決策を見つけました。中括弧のない多数の単一のk / vオブジェクトの配列が必要な場合は、それらのいくつかをインデントするだけです。トリックを行うようです。
data = [
"2013-09-25T16:46:52.636Z":3,
"2013-09-25T16:47:52.636Z":6,
"2013-09-25T16:48:52.636Z":2,
"2013-09-25T16:49:52.636Z":7,
"2013-09-25T16:50:52.636Z":5,
"2013-09-25T16:51:52.636Z":2,
"2013-09-25T16:52:52.636Z":1,
"2013-09-25T16:53:52.636Z":3,
"2013-09-25T16:54:52.636Z":8,
"2013-09-25T16:55:52.636Z":9,
"2013-09-25T16:56:52.636Z":2,
"2013-09-25T16:57:52.636Z":5,
"2013-09-25T16:58:52.636Z":7
]
生成する:
coffee> data
[ { '2013-09-25T16:46:52.636Z': 3 },
{ '2013-09-25T16:47:52.636Z': 6 },
{ '2013-09-25T16:48:52.636Z': 2 },
{ '2013-09-25T16:49:52.636Z': 7 },
{ '2013-09-25T16:50:52.636Z': 5 },
{ '2013-09-25T16:51:52.636Z': 2 },
{ '2013-09-25T16:52:52.636Z': 1 },
{ '2013-09-25T16:53:52.636Z': 3 },
{ '2013-09-25T16:54:52.636Z': 8 },
{ '2013-09-25T16:55:52.636Z': 9 },
{ '2013-09-25T16:56:52.636Z': 2 },
{ '2013-09-25T16:57:52.636Z': 5 },
{ '2013-09-25T16:58:52.636Z': 7 } ]
それは私には直観に反しています。これはサブオブジェクトを作成すると思いますが、行の最後のコンマは、そのオブジェクトのプロパティの作成を停止するように指示していると思います。
Python
、私の「第一言語」であり、私はいくつかの余分な括弧や中括弧を使用することを恐れていませんよ。Coffeescriptがそれらを必要としない場合でも、私はそれらが役立つと思います。2番目のブロックはより読みやすくなっています。