CoffeeScript에서 익명 개체의 배열을 어떻게 정의합니까? YAML 구문을 사용하여 가능합니까?
명명 된 개체의 배열을 갖는 것이 매우 쉽다는 것을 알고 있습니다.
items:[
item1:
name1:value1
item2:
name:value2
]
하지만이 두 개체에 이름이 없으면 조금 더 까다로울 것입니다.
CoffeeScript에서 익명 개체의 배열을 어떻게 정의합니까? YAML 구문을 사용하여 가능합니까?
명명 된 개체의 배열을 갖는 것이 매우 쉽다는 것을 알고 있습니다.
items:[
item1:
name1:value1
item2:
name:value2
]
하지만이 두 개체에 이름이 없으면 조금 더 까다로울 것입니다.
답변:
당신은 할 수 없습니다 :
이것은 몇 가지 트릭입니다.
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 = [
{
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
]
두 개의 익명 개체 목록이 예상했던대로 결과가 나타납니다.
관련 문제가 발생하여이 솔루션을 찾았습니다. 중괄호가없는 단일 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가 필요하지 않더라도 도움이 될 것입니다. 두 번째 블록이 더 읽기 쉽습니다.