Indexer (programming): Difference between revisions

Content deleted Content added
Fishy5 (talk | contribs)
m Remove outdated warning header
No edit summary
Line 11:
double& operator[](int i) { return data[i]; }
};
 
#include <iostream>
 
int main() {
vector v(3);
for (int i = 0; i < v.size; i++) v[i] = i + 1;
for (int i = 0; i < v.size; i++) std::cout << v[i] << "\n";
return 0;
}
</syntaxhighlight>
 
=== C sharp# ===
Indexers are implemented through the get and set [[Mutator method|accessor]]s for the {{C_sharp|operator[]}}. They are similar to [[Property (programming)|properties]], but differ by not being [[Static method|static]], and the fact that indexers' accessors take parameters. The get and set accessors are called as methods using the parameter list of the indexer declaration, but the set accessor still has the implicit {{C_sharp|value}} parameter.
 
Line 27 ⟶ 29:
public class Vector
{
private double[] data_data;
 
public Vector(int n) { data = new double[n]; }
public Vector(int size => data.Length;n)
{
public double this[int i] { get => data[i]; set => data[i] = value; }
public Vector(int n) { data_data = new double[n]; }
}
 
public int Size => _data.Length;
 
public double this[int i]
{
get => _data[i];
set => _data[i] = value;
}
 
public static void Main()
{
var vvector = new Vector(3);
for (intvar i = 0; i < vvector.sizeSize; i++) v[i] = i + 1;
for (int vector[i] = 0; i < v.size; i++) System.Console.WriteLine(v[i])1;
for (var i = 0; i < vector.Size; i++)
System.Console.WriteLine(vector[i]);
}
}
Line 102 ⟶ 116:
<syntaxhighlight lang="php">
<?php
class Vector implements ArrayAccess
{
function __construct(int $n) {
$this->size = $n;
$this->data = array_fill(0, $n, 0);
}
 
public function offsetGet($offset): mixed {
return $this->data[$offset];
}
 
public function offsetSet($offset, $value): void {
$this->data[$offset] = $value;
}
 
public function offsetExists($offset): bool {}
 
public function offsetUnset($offset): void {}
}
 
$vvector = new Vector(3);
for ($i = 0; $i < $v->size; $i++) $v[$i] = $i + 1;
 
for ($i = 0; $i < $v->size; $i++) print "{$v[$i]}\n";
for ($i = 0; $i < $vvector->size; $i++) $vvector[$i] = $i + 1;
for ($i = 0; $i < $vvector->size; $i++) print "{$vvector[$i]}\n";
?>
</syntaxhighlight>
Line 126 ⟶ 147:
<syntaxhighlight lang="python">
import array
 
class Vector(object):
def __init__(self, n: int):
self.size = n
self.data = array.array("d", [0.0] * n)
def __getitem__(self, i): return self.data[i]
def __setitem__(self, i, value): self.data[i] = value
 
def __getitem__(self, i): return self.data[i]int):
v = Vector(3)
return self.data[i]
for i in range(v.size): v[i] = i + 1
 
for i in range(v.size): print(v[i])
def __setitem__(self, i: int, value): self.data[i] = value
self.data[i] = value
 
vvector = Vector(3)
for i in range(vvector.size): v[i] = i + 1
vector[i] = i + 1
for i in range(vvector.size): print(v[i])
print(vector[i])
</syntaxhighlight>