v 选项 参数
:
选项 |
意思 |
---|---|
install |
安装 |
remove |
删除 |
search |
搜索 |
update |
更新,更新一个 |
upgrade |
升级,升级所有过时的 |
list |
列举 |
outdated |
过时,列举需要升级的 |
v install ui
//从VPM搞事情
v remove [module]
发布包
v.mod
.用v new mymodule或v init
命令,已有.
内部为:
Module {
name: "mymodule"
description: "我的包."
version: "0.0.1"
license: "MIT"
dependencies: []
}
最小结构:
v.mod
mymodule.v
内部为:
//mymodule.v
module mymodule
pub fn hello_world() {
println("你好啊")
}
创建git
git init
git add .
git commit -m "INIT"
在github.com
上建仓库.推至远端
.
在https://vpm.vlang.io/new
上提交.
最终模块名为:mygithubname.mymodule
,并加上vlang/vlang-module
标签来方便搜索.
声明类型
struct Dog {
breed string
}
struct Cat {
breed string
}
fn (d Dog) speak() string {
return "woof"
}
fn (c Cat) speak() string {
return "meow"
}
//V的接口可定义字段和方法
interface Speaker {
breed string
speak() string
}
dog := Dog{"Leonberger"}
cat := Cat{"Siamese"}
mut arr := []Speaker{}
arr << dog
arr << cat
for item in arr {
println("$item.breed说: $item.speak()")
}
实现字段+方法
即实现接口,不必显式声明意图
,无实现
关键字.转换接口
interface Something {}
fn announce(s Something) {
if s is Dog {
println("$s.breed dog") // `s`自动转为狗
} else if s is Cat {
println("$s.breed cat")
} else {
println("其余")
}
}
用动态
转换操作符,测试接口底层
类型.接口可实现默认
方法,这样构可不实现.
struct Cat {}
fn (c Cat) speak() string {
return "meow!"
}
interface Adoptable {}
fn (a Adoptable) speak() string {
return "哈哈!"
}//接口的
fn new_adoptable() Adoptable {
return Cat{}
}
fn main() {
cat := Cat{}
assert cat.speak() == "meow!"
a := new_adoptable()
assert a.speak() == "哈哈!"//表层
if a is Cat {//底层
println(a.speak()) // meow!
}
}
对象以接口
展示,则调用接口
实现.即当作基类
,如转为子类
,才调用子类
同名函数.