Logo

Programming-Idioms

  • PHP
  • Go
  • JS
  • Java
  • Pascal

Idiom #196 Pass a sub-array

Given an integer array a of size n, pass the first, third, fifth and seventh, ... up to the m th element to a routine foo which sets all these elements to 42.

uses Math;
procedure foo(var L: Integer);
begin
  L := 42;
end;

begin
  for i := 0 to Min(m, n-1) do
    if not odd(i) then foo(a[i]);
end.
func foo(a []int, m int) {
	n := len(a)
	for i := 0; i < m && i < n; i += 2 {
		a[i] = 42
	}
}
void foo(int a[], int m) {
    for (int i = 1; i <= m; a[i] = 42, i = i + 2);
}

Passes the entire `a` reference.
interface F { void set(int a[], int m); }
F f = (a, m) -> {
    for (int i = 1; i <= m; a[i] = 42, i = i + 2);
};
void Foo(out int element)
{
    element = 42;
}

for (int i = 0; i < m; i += 2)
{
    Foo(out a[i]);
}

a.Length is the size of a at run-time.

Requires m <= a.Length; the code does not verify this beforehand.

References to individual elements are passed to Foo().

New implementation...
< >
tkoenig