FunVec2T(T, Opt`1Int32, Opt`1FuncInt32, Int32) Constructor

2-dimensional jagged collection with optional lengths, which always yields the same constant value.
C#
var agentSmith = GetSmith();
FunVec2<Agent> jagged = new(agentSmith);
Assert(jagged.Length1 == int.MaxValue);   // since length1 is omitted
Assert(jagged.Length2(42) == int.MaxValue); // since length2 is omitted
Assert(jagged[0][0] == agentSmith);
Assert(jagged[42][42] == agentSmith);
Assert(jagged.GetOrNone(100, 42) == Some(agentSmith));

FunVec2<Agent> jagged = new(agentSmith, Some(50));
Assert(jagged.Length1 == 50);
Assert(jagged.Length2(42) == int.MaxValue); // since length2 is omitted
Assert(jagged[0][0] == agentSmith);
Assert(jagged[42][142] == agentSmith);
Assert(jagged.GetOrNone(100, 2).IsNone);

FunVec2<Agent> jagged = new(agentSmith, Some(50), Some<Func<int, int>>(_ => 2));
Assert(jagged.Length1 == 50);
Assert(jagged.Length2(42) == 2);
Assert(jagged[0][0] == agentSmith);
Assert(jagged[42][1] == agentSmith);
Assert(jagged.GetOrNone(0, 2).IsNone);
Assert(jagged.GetOrNone(50, 0).IsNone);

FunVec2<Agent> jagged = new(agentSmith, Some(50), Some<Func<int, int>>(i => i));
Assert(jagged.Length1 == 50);
Assert(jagged.Length2(0) == 0);
Assert(jagged.Length2(42) == 42);
Assert(jagged[42][1] == agentSmith);
Assert(jagged.GetOrNone(1, 0) == Some(agentSmith));
Assert(jagged.GetOrNone(0, 0).IsNone);
Assert(jagged.GetOrNone(50, 0).IsNone);

Definition

Namespace: Orx.Fun.FunVec
Assembly: Orx.Fun.FunVec (in Orx.Fun.FunVec.dll) Version: 1.0.0
C#
public FunVec2(
	T constantValue,
	Opt<int> length1 = default,
	Opt<Func<int, int>> getLength2 = default
)

Parameters

constantValue  T
Constant value that every position of the jagged array will return.
length1  OptInt32  (Optional)
Optional length of the jagged array; will default to None (int.MaxValue) when omitted.
getLength2  OptFuncInt32, Int32  (Optional)
Optional function (i -> length) to get length of the i-th collection; when omitted will default to None which will yield to a length of int.MaxValue for any index.

See Also