Operator Overloading ==================== ```Example from 1 languages: Python # Python Program illustrate how # to overload an binary + operator class A: def __init__(self, a): self.a = a # adding two objects def __add__(self, o): return self.a + o.a ob1 = A(1) ob2 = A(2) ob3 = A("Geeks") ob4 = A("For") print(ob1 + ob2) print(ob3 + ob4) ``` ```Example from 1 languages: C3 fn int IntList.get(IntList* this, int idx) @operator([]) { return this.vals[idx]; } ... IntList x = ... foo(x[1]); ``` ```Example from 1 languages: Wa-lang #wa:operator + MyInt_add type MyInt :struct { V: int } func MyInt_add(x, y: MyInt) => int { return x.V + y.V } func main { x1 := MyInt{V: 100} x2 := MyInt{V: 42} println(x1 + x2) } ``` ```Example from 1 languages: MoonBit struct T { x:Int } derive(Show) fn op_add(self: T, other: T) -> T { { x: self.x + other.x } } fn main { let a = { x:0, } let b = { x:2, } println(a + b) } ``` ```Example from 1 languages: Wolfram Language f[x_Integer] := x^2; f[x_String] := "not a number"; f[x_Symbol] := x^2; ``` ```Example from 1 languages: Speedie str = "a" + "b" array <~ str ``` * Languages *with* Operator Overloading include Python, C++, Perl, Ruby, PHP, C#, R, Rust, Swift, MATLAB, Scala, Lua, Kotlin, Haskell, Clojure, Dart, Ada, D, Chapel, Groovy, F#, Smalltalk, Visual Basic .NET, C3, Eiffel, Wa-lang, MoonBit, Wolfram Language, Ceylon, Raku, Io, Object Pascal, Seed7, FreeBASIC, Speedie, Free Pascal * Languages *without* Operator Overloading include JavaScript, C, Java, Go, TypeScript, Objective-C, Visual Basic, Pascal, BASIC, Modula-2, Lil, progsbase, Veryl, Jule * View all concepts with or missing a *hasOperatorOverloading* measurement http://pldb.info/../lists/explorer.html#columns=rank~id~appeared~tags~creators~hasOperatorOverloading&searchBuilder=%7B%22criteria%22%3A%5B%7B%22condition%22%3A%22null%22%2C%22data%22%3A%22hasOperatorOverloading%22%2C%22origData%22%3A%22hasOperatorOverloading%22%2C%22type%22%3A%22num%22%2C%22value%22%3A%5B%5D%7D%5D%2C%22logic%22%3A%22AND%22%7D missing http://pldb.info/../lists/explorer.html#columns=rank~id~appeared~tags~creators~hasOperatorOverloading&searchBuilder=%7B%22criteria%22%3A%5B%7B%22condition%22%3A%22!null%22%2C%22data%22%3A%22hasOperatorOverloading%22%2C%22origData%22%3A%22hasOperatorOverloading%22%2C%22type%22%3A%22num%22%2C%22value%22%3A%5B%5D%7D%5D%2C%22logic%22%3A%22AND%22%7D with * Read more about Operator Overloading on the web: 1. 2. https://en.wikibooks.org/wiki/Introduction_to_Programming_Languages/Overloading 1. https://en.wikipedia.org/wiki/Operator_overloading 2. Built with Scroll v178.2.3