在modelica中开发模型库,我们决定更改和删除一些默认值。目前,我正在编写转换脚本,以确保在其他模型中使用库时更新库没有问题。
在较新的库版本中,是否有可能保留旧的默认值以防被删除,更改和重命名的值?我知道可以使用带有convertElement / convertModifiers的库来保留模型中给出的模型值。
exampleLib库中模型的旧版本:
<m-new-product-request #createNewProductRequestModal [data]="newProductRequest"></m-new-product-request>
exampleLib库中模型的新版本:
private products = [];
@Input('data')
set data(data: any) {
if (data !== undefined || data !== "") {
this.products = data;
this.setProducts();
}
//this.ref.detectChanges();
}
constructor(private ref: ChangeDetectorRef) { }
ngOnInit() {
this.onModalHiddenEvent(this);
this.setTableDataSource();
}
private setProducts() {
this.onModalHiddenEvent(this);
this.orders = [];
for (let key in this.products) {
this.orders.push(this.products[key]);
}
this.setTableDataSource();
}
private setTableDataSource() {
this.dataSourceOrders = new MatTableDataSource(this.orders);
this.dataSourceOrders.paginator = this.ordersPaginator;
}
private onModalHiddenEvent(self) {
$('#createNewProductRequestModal').on('hidden.bs.modal', function () {
$(this).data('bs.modal', null);
});
}
如果该值将在'exampleModel'中给出
model modelLib
parameter Real exampleVal = 2;
end modelLib;
一个转换脚本,例如
model modelLib
parameter Real exampleValNew;
end modelLib;
将确保保留exampleModel中的参数。
如果'exampleModel'中没有给出值,是否有可能保留默认值?
在这种情况下,使用该库的模型代码将为:
model exampleModel
exampleLib.modelLib exampleLibTest(exampleVal = 4)
end exampleModel;
感谢您的帮助!
答案 0 :(得分:2)
在某些情况下,也可以选择以下选项。
这是一个完全不同的解决方案,因为它在库中保留了默认值-但方式不同。这可以通过在新库中添加以下内容来完成:
model modelLib
parameter Real exampleValNew(start=2);
end modelLib;
您未指定值的旧模型将运行,但会生成警告。
答案 1 :(得分:1)
要重命名参数或变量而不使用任何修饰符,请使用
convertElement("exampleLib.modelLib", "exampleVal", "exampleValNew");
答案 2 :(得分:1)
我用以下方法解决了这个问题:
convertModifiers("exampleLib.modelLib", fill("",0), {"exampleValNew=2"});