这就是我所拥有的:
sealed abstract class Codes(list: List[String])
object UVWCodes extends Codes(List("U", "V", "W"))
object XYZCodes extends Codes(List("X", "Y", "Z"))
我想使用宏将列出的值扩展为:
parse(str: String): Codes = str match {
case "U" | "V" | "W" => UVWCodes
case "X" | "Y" | "Z" => XYZCodes
}
由于代码是密封类,因此可以获取其子类列表。但是,如何提取代码文字列表(" U"," V"等)?
答案 0 :(得分:1)
写作时
sealed abstract class Codes(list: List[String])
list只是构造函数参数,如果不使用,丢失。如果您使用关键字 val 作为前缀,则它将成为不可变属性,因此您可以访问外部
sealed abstract class Codes(val list: List[String])
UVWCodes.list // Valid code
答案 1 :(得分:1)
来自@ Edmondo1984的决定性贡献和来自其他地方的片段,这是一个完全编码的解决方案:
submitForm(value: any, originalRow: any){
var dataPointID = originalRow.receivedRow.tDataPoint;
for (let entry in DPS) {
if (DPS[entry].tDataPoint === dataPointID) {
DPS[entry].tDataPoint = String(this.updateForm.controls['dataPoint'].value);
DPS[entry].tICCP = String(this.updateForm.controls['ICCP'].value);
DPS[entry].tStartDate = String(this.updateForm.controls['startDate'].value);
DPS[entry].tEndDate = String(this.updateForm.controls['endDate'].value);
this['startDate'] = null;
this['endDate'] = null;
}
}
}