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