Сообщение Re[3]: Декларация типа по полному имени от 18.01.2016 15:33
Изменено 18.01.2016 15:33 STDray
Здравствуйте, vaskir, Вы писали:
V>
V>В результате для YAML "Person: 1" выдается ошибка: error : unbound name `1'
Надо написать функцию преобразования скаляра в квазицитату, что-то вроде
Потом
V>
V>def fieldType = PExpr.FromQualifiedIdentifier(builder.Manager, node.BoxedValue.GetType().FullName);
V>def fieldName = $"_$name";
V>def defaultValue = node.BoxedValue.ToString();
V>builder.Define(<[decl: private mutable $(fieldName: usesite): $fieldType = $(defaultValue: usesite); ]>);
V>
V>В результате для YAML "Person: 1" выдается ошибка: error : unbound name `1'
Надо написать функцию преобразования скаляра в квазицитату, что-то вроде
ToExpr(scalar : Scalar) : PExpr
{
| Int(v) => <[ $v ]>;
| String(v) => <[ $v ]>;
| TimeSpan(v) => <[ TimeSpan.FromMilliseconds($(v.TotalMilliseconds)) ]>
| Bool(v) => <[ $v ]>;
| Uri(v) => <[ Uri($(v.OriginalString)) ]>
| Float(v) => <[ $v ]>
}
Потом
def defaultValue = ToExpr(node.BoxedValue);
builder.Define(<[decl: private mutable $(fieldName: usesite): $fieldType = $defaultValue; ]>);
Re[3]: Декларация типа по полному имени
Здравствуйте, vaskir, Вы писали:
V>
V>В результате для YAML "Person: 1" выдается ошибка: error : unbound name `1'
Надо написать функцию преобразования скаляра в квазицитату, что-то вроде
Потом
V>
V>def fieldType = PExpr.FromQualifiedIdentifier(builder.Manager, node.BoxedValue.GetType().FullName);
V>def fieldName = $"_$name";
V>def defaultValue = node.BoxedValue.ToString();
V>builder.Define(<[decl: private mutable $(fieldName: usesite): $fieldType = $(defaultValue: usesite); ]>);
V>
V>В результате для YAML "Person: 1" выдается ошибка: error : unbound name `1'
Надо написать функцию преобразования скаляра в квазицитату, что-то вроде
ToExpr(scalar : Scalar) : PExpr
{
| Int(v) => <[ $v ]>;
| String(v) => <[ $v ]>;
| TimeSpan(v) => <[ TimeSpan.FromMilliseconds($(v.TotalMilliseconds)) ]>
| Bool(v) => <[ $v ]>;
| Uri(v) => <[ Uri($(v.OriginalString)) ]>
| Float(v) => <[ $v ]>
}
Потом
def defaultValue = ToExpr(node);
builder.Define(<[decl: private mutable $(fieldName: usesite): $fieldType = $defaultValue; ]>);