본문으로 건너뛰기

같은 필드를 여러 벌 적기

시트가 코드가 되는 모습으로


컬럼 하나만 갈리고 나머지가 공유되는 데이터가 있습니다. 테이블을 여러 벌 만들 것도, 컬럼 이름에 지역을 붙일 것도 없습니다 — 같은 이름으로 여러 벌 적고 빌드가 하나를 고릅니다.

같은 필드 이름을 컬럼 여러 개에 적고 :variant 행이 구분합니다. 빈 칸이 기본 변형이고, 타입과 설명은 그 컬럼에 한 번만 적습니다.

고르는 것은 recipe의 "Variants": { "Price.Amount": "kr" } 또는 CLI의 --variant Price.Amount=kr 이고, 명령줄이 recipe를 덮습니다.

테이블 Price

[System.Serializable]
public partial class PriceRecord
{
#region Values
/// <summary>
/// primary index
/// </summary>
public int Index => _index;

/// <summary>
/// display name
/// </summary>
public string Name => _name;

/// <summary>
/// what it costs
/// </summary>
public int Amount => _amount;
#endregion

#region Storage
internal int _index;
internal string _name = "";
internal int _amount;
#endregion

#region ToString
public override string ToString()
{
var sb = new StringBuilder("{");
sb.Append("\"Index\":"); ToStringHelper.ToString(Index, sb);
sb.Append(",\"Name\":"); ToStringHelper.ToString(Name, sb);
sb.Append(",\"Amount\":"); ToStringHelper.ToString(Amount, sb);
sb.Append("}");
return sb.ToString();
}
#endregion
}

PriceTable.cs

산출물은 변형을 모릅니다. Amount 멤버 하나뿐이고, 이름에도 타입에도 어느 변형이었는지가 남지 않습니다 — 고른 컬럼 하나가 그 필드가 되고 나머지는 그 빌드에 없습니다.

위는 변형을 지정하지 않은 빌드이므로 기본 변형이 실렸습니다. --variant Price.Amount=kr 로 빌드하면 같은 코드에 값만 달라집니다.

키 컬럼과 그룹 컬럼에는 변형을 둘 수 없습니다.