V语言 可选类型(Option types)
struct User { id int } struct Repo { users []User } fn new_repo() Repo { user := User{id:10} return Repo { users: [user] } } fn (r Repo) find_user_by_id(id int) User? { for user in r.users { if user.id == id { // V automatically wraps this into an option type return user } } return error('User $id not found') } fn main() { repo := new_repo() user := repo.find_user_by_id(10) or { // Option types must be handled by `or` blocks return // `or` block must end with `return`, `break`, or `continue` } println(user.id) // ==> "10" }
将函数"升级"为可选函数所需的工作量很小,你只需要添加一个 ?
来返回类型并在出现错误时返回错误。
如果你不需要返回一个错误,那么你可以简单地返回 None
。(*None
目前还没有实现)