mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
implement generic structs
This commit is contained in:

committed by
Alexander Medvednikov

parent
b3a402eb82
commit
fbd9fedbfb
@ -98,3 +98,34 @@ fn test_generic_fn_in_for_in_expression() {
|
||||
assert value == 'a'
|
||||
}
|
||||
}
|
||||
|
||||
// test generic struct
|
||||
struct DB {
|
||||
driver string
|
||||
}
|
||||
|
||||
struct User {
|
||||
db DB
|
||||
mut:
|
||||
name string
|
||||
}
|
||||
|
||||
struct Repo<T> {
|
||||
db DB
|
||||
mut:
|
||||
model T
|
||||
}
|
||||
|
||||
fn new_repo<U>(db DB) Repo<U> {
|
||||
return Repo<U>{db: db}
|
||||
}
|
||||
|
||||
fn test_generic_struct() {
|
||||
mut a := new_repo<User>(DB{})
|
||||
a.model.name = 'joe'
|
||||
mut b := Repo<User>{db: DB{}}
|
||||
b.model.name = 'joe'
|
||||
assert a.model.name == 'joe'
|
||||
assert b.model.name == 'joe'
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user