美文网首页V语言
V语言学习笔记-18运算符重载

V语言学习笔记-18运算符重载

作者: lydiandy | 来源:发表于2020-05-19 16:26 被阅读0次

有限的运算符重载

目前只实现了+ - * / 这四种运算符的重载,但是基本够用了

可以自定义复杂类型的加减乘除的语义,让自定义类型加减乘除的代码可读性会非常好

为了提高安全性和可维护性,重载有以下限制:

  • 只有+, -, *, /可以重载

  • 重载运算符的函数内部禁止调用其它函数

  • 重载运算符的函数不能修改它们的参数

  • 参数和返回值必须有相同的类型(和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语言学习笔记-18运算符重载

    有限的运算符重载 目前只实现了+ - * / 这四种运算符的重载,但是基本够用了 可以自定义复杂类型的加减乘除的语...

  • kotlin 解构函数声明和运算符重载operator

    kt的解构函数声明和运算符重载operator学习笔记###

  • C++重载

    重载 C++语言规定: 重载的运算符要保持原运算符的意义。只能对已有的运算符重载,不能增加新的运算符。重载的运算符...

  • 1.2.15_C++ 关系运算符重载

    C++ 重载运算符和重载函数 C++ 语言支持各种关系运算符( < 、 > 、 <= 、 >= 、 == 等等),...

  • 2017.9.22

    今天学习的是运算符的重载: 运算符重载: 使用运算符重载的一般格式为: 类型名 operator 运算符(形参表...

  • 1.2.17_C++ ++ 和 -- 运算符重载

    C++ 重载运算符和重载函数 递增运算符( ++ )和递减运算符( -- )是 C++ 语言中两个重要的一元运算符...

  • 运算符重载及其他约定

    7.1 重载算术运算符 重载二元算术运算符 重载复合赋值运算符 重载一元运算符 重载比较运算符 等号运算符:‘eq...

  • C++ 部分运算符重载

    可重载的运算符 不可重载的运算符和符号 重载运算符为类的成员函数 重载运算符为友元函数 重载赋值运算符 重载流插入...

  • 2017-9-22学习总结

    星期五 阵雨 今天学习了运算符重载 笔记内容: 一般格式是: 类型名 operator 运算符(形参表){函数体...

  • 2019-07-11 运算符的重载

    运算符的重载 重载运算符 (“::”,“.*”,“.”,“?:”)不能被重载。 重载运算符时,不能改变其本质,如不...

网友评论

    本文标题:V语言学习笔记-18运算符重载

    本文链接:https://www.haomeiwen.com/subject/slbbohtx.html