×
V语言 简介V语言 Hello WorldV语言 注释V语言 函数V语言 变量V语言 基本类型V语言 字符串(Strings)V语言 数组(Arrays)V语言 MapsV语言 IfV语言 For循环V语言 SwitchV语言 结构体(Structs)V语言 方法(Methods)V语言 可变接收器及纯函数V语言 常量(Constants)V语言 模块(Modules)V语言 接口(Interfaces)V语言 枚举(Enums)V语言 可选类型(Option types)V语言 泛型(Generics)V语言 并发(Concurrency)V语言 JSON解析V语言 测试(Testing)V语言 内存管理V语言 有限的运算符重载V语言 热更新V语言 调用C函数示例V语言 转换C/C++代码到V语言V语言 交叉编译V语言 关键词

V语言 有限的运算符重载


struct Vec {
	x int
	y int
}
 
fn (a Vec) str() string { 
	return '{$a.x, $a.y}' 
}
 
fn (a Vec) + (b Vec) Vec {
	return Vec {
		a.x + b.x, 
		a.y + b.y 
	}
}
 
fn (a Vec) - (b Vec) Vec {
	return Vec {
		a.x - b.x, 
		a.y - b.y
	}
}
 
fn main() { 
	a := Vec{2, 3}
	b := Vec{4, 5}
	println(a + b) // ==> "{6, 8}"  
	println(a - b) // ==> "{-2, -2}"  
} 


运算符重载违背了V的简单性和可预测性的理念。 但由于科学和图形应用程序也属于V的应用范围,因此为了提高可读性,运算符重载非常重要:

a.add(b).add(c.mul(d)) 的可读性远远不及 a + b + c * d

为了提高安全性和可维护性,运算符重载有几个局限性:

  • 只能重载+-*/运算符。
  • 不允许在重载函数内调用其他函数。
  • 运算符函数无法修改其参数。
  • 两个参数必须具有相同的类型(就像V中的所有运算符一样)。

分类导航

关注微信下载离线手册

bootwiki移动版 bootwiki
(群号:472910771)