15.2 Рефлексия
comptime fn toCsvRow<T>(x: &T) -> String {
var out = String.new()
inline for f in reflect(T).fields where f.visible {
out.push("{x.[f]},")
}
out
}reflect(T) -> TypeInfo(только comptime): имя, вид (Data,Enum,Union,Prim,Interface,Service,Actor,Topic,Config), поля (name,type,tag,attrs,visibility,default), варианты, методы (name,params,ret,effects,attrs), rpc, атрибуты.x.[f]— доступ к полю по comptime-значениюFieldInfo.- Рантайм-рефлексия только для типов с
@reflect:rt.typeinfo(x),rt.get(x, "field") -> Any | NoField,rt.set(&var x, "field", v),rt.call(&x, "method", args) -> Any | CallError. Типы без@reflectметаданных в бинарнике не имеют. - Рефлексия видит только то, что видно в точке вызова по правилам §2.3.
См. также
Исходник: docs/spec/oxl-standard.md