// Created on savesnippets.com · https://savesnippets.com/9VlG9rWxGNMDWK data class Vec2(val x: Double, val y: Double) { operator fun plus(other: Vec2) = Vec2(x + other.x, y + other.y) operator fun minus(other: Vec2) = Vec2(x - other.x, y - other.y) operator fun times(scalar: Double) = Vec2(x * scalar, y * scalar) operator fun unaryMinus() = Vec2(-x, -y) } class Inventory { private val items = mutableMapOf() operator fun get(sku: String) = items[sku] ?: 0 operator fun set(sku: String, qty: Int) { items[sku] = qty } operator fun contains(sku: String) = sku in items } fun main() { val a = Vec2(1.0, 2.0) val b = Vec2(3.0, 4.0) println(a + b) // Vec2(x=4.0, y=6.0) println(b - a) // Vec2(x=2.0, y=2.0) println(a * 3.0) // Vec2(x=3.0, y=6.0) println(-a) // Vec2(x=-1.0, y=-2.0) val inv = Inventory() inv["A1"] = 10 // calls set() println(inv["A1"]) // 10 — calls get() println("A1" in inv) // true — calls contains() }