文档 / 教程
09 · 泛型、struct@、any
裸 any/temp 是动态盒。fn f#T 值泛型单态。struct@ Name 是方法集约束,有匹配方法即满足,无需 impl。
源码
@main
struct@ ToString {
fn to_string() string
}
struct User {
name string
age int
}
fn (u User) to_string() string {
<< u.name
}
struct Score {
n int
}
fn (s Score) to_string() string {
<< "score"
}
fn print_item(item# ToString) {
println(item.to_string())
}
fn identity#T(x T) T {
<< x
}
fn main() int {
u := User{name: "ada", age: 36}
print_item(u)
print_item(Score{n: 3})
println(identity(42))
let box: temp = 7
println(box is int)
v := box as int
println(v)
<< 0
}编译(examples 仓库根,使用已安装的 xu):
xu run examples/09_generics_temp/main.xu
# 或:xu build examples/09_generics_temp/main.xu
# mac/linux 默认写出 ./main ;Windows 为 ./main.exe
在独立的 examples 仓库根执行;源码位于 examples/。