1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00

docs: change <> to [] in docs.md (#16632)

This commit is contained in:
Keito Tobichi 2022-12-10 17:47:03 +09:00 committed by GitHub
parent 7c02274754
commit ad5290677c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -3747,7 +3747,7 @@ fn main() {
```v wip
struct Repo<T> {
struct Repo[T] {
db DB
}
@ -3763,14 +3763,14 @@ struct Post {
body string
}
fn new_repo<T>(db DB) Repo<T> {
return Repo<T>{db: db}
fn new_repo[T](db DB) Repo[T] {
return Repo[T]{db: db}
}
// This is a generic function. V will generate it for every type it's used with.
fn (r Repo<T>) find_by_id(id int) ?T {
fn (r Repo[T]) find_by_id(id int) ?T {
table_name := T.name // in this example getting the name of the type gives us the table name
return r.db.query_one<T>('select * from ${table_name} where id = ?', id)
return r.db.query_one[T]('select * from ${table_name} where id = ?', id)
}
db := new_db()
@ -3782,7 +3782,7 @@ post := posts_repo.find_by_id(1)? // find_by_id<Post>
Currently generic function definitions must declare their type parameters, but in
future V will infer generic type parameters from single-letter type names in
runtime parameter types. This is why `find_by_id` can omit `<T>`, because the
runtime parameter types. This is why `find_by_id` can omit `[T]`, because the
receiver argument `r` uses a generic type `T`.
Another example: