Softanza
StartFrançais
Softanza
Reference · stzMatrex

Match()

matching logic

Basic examples (2)

Softanza
oMx = new stzMatrex("{size(1x1)}")
aMatrix = [[42]]
? oMx.Match(aMatrix)
Output
1

run on 2026-10-02 04:23 inside the library at commit 0e72e2e2c; taken from 45_1x1_matrix.ring(opens in a new tab)

Softanza
oMx = new stzMatrex("{}")
aMatrix = [[1, 2], [3, 4]]
? oMx.Match(aMatrix)
Output
1

run on 2026-10-02 04:23 inside the library at commit 0e72e2e2c; taken from 44_empty_pattern.ring(opens in a new tab)

Scope (8)

Softanza
oMx = new stzMatrex("{shape(square)}")
aMatrix = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]]
oMx.Match(aMatrix)
? @@( oMx.Size() )
Output
[ 4, 4 ]

run on 2026-10-02 04:23 inside the library at commit 0e72e2e2c; taken from 37_get_size_from_matched_parts.ring(opens in a new tab)

Softanza
oMx = new stzMatrex("{shape(square)}")
aSquare = [[1, 2], [3, 4]]
aRect = [[1, 2, 3], [4, 5, 6]]
? oMx.Match(aSquare)
? oMx.Match(aRect)
Output
1
0

run on 2026-10-02 04:23 inside the library at commit 0e72e2e2c; taken from 04_square_matrix.ring(opens in a new tab)

Softanza
oMx = new stzMatrex("{shape(rectangular)}")
aSquare = [[1, 2], [3, 4]]
aRect = [[1, 2, 3], [4, 5, 6]]
? oMx.Match(aSquare)
? oMx.Match(aRect)
Output
0
1

run on 2026-10-02 04:23 inside the library at commit 0e72e2e2c; taken from 05_rectangular_matrix.ring(opens in a new tab)

Softanza
oMx = new stzMatrex("{(shape(square) | shape(rectangular))}")
aSquare = [[1, 2], [3, 4]]
aRect = [[1, 2, 3], [4, 5, 6]]
? oMx.Match(aSquare)
? oMx.Match(aRect)
Output
1
1

run on 2026-10-02 04:23 inside the library at commit 0e72e2e2c; taken from 19_square_or_rectangular_alternation.ring(opens in a new tab)

Softanza
oMx = new stzMatrex("{Size(3x3)}")
aMatrix = [
	[1, 2, 3],
	[4, 5, 6],
	[7, 8, 9]
]
? oMx.Match(aMatrix)
Output
1

run on 2026-10-02 04:23 inside the library at commit 0e72e2e2c; taken from 01_matching_exact_size.ring(opens in a new tab)

Softanza
oMx = new stzMatrex("{size(2x2)}")
aMatrix = [
	[1, 2, 3],
	[4, 5, 6],
	[7, 8, 9]
]
? oMx.Match(aMatrix)
Output
0

run on 2026-10-02 04:23 inside the library at commit 0e72e2e2c; taken from 02_matching_wrong_size.ring(opens in a new tab)

Softanza
oMx = new stzMatrex("{size(mxn)}")
aMatrix1 = [[1, 2], [3, 4]]
aMatrix2 = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
aMatrix3 = [[1, 2, 3, 4]]
? oMx.Match(aMatrix1)
? oMx.Match(aMatrix2)
? oMx.Match(aMatrix3)
Output
1
1
1

run on 2026-10-02 04:23 inside the library at commit 0e72e2e2c; taken from 03_matching_any_size_mxn_notation.ring(opens in a new tab)

Softanza
oMx = new stzMatrex("{property(identity)}")
aMatrix = [
	[1, 0, 0],
	[0, 1, 0],
	[0, 0, 1]
]
oMx.Match(aMatrix)
? oMx.Properties()
Output
Square
Symmetric
Diagonal
Identity

run on 2026-10-02 04:23 inside the library at commit 0e72e2e2c; taken from 38_get_properties_list.ring(opens in a new tab)

and 17 more in the tests

The extensions of this method

Each extension, and whether it exists for this method; an extension that exists combines with the others (FindSTCS).

Extension
Exists
What it adds · The names
Q
no
does what the method does, then returns the object, so the call can be chained
QQ
no
chains on the next, more specific type of object (the Q ladder)
QQQ
no
chains on the most specific type of object (the Q ladder)
QRT
no
returns the result as an object of the requested type
CS
no
takes a case-sensitivity flag
ST
no
takes the position to start from (StartingAt)
IB
no
takes bounds that are included (IncludingBounds)
XT
no
the extended form: more parameters than the base method
XTT
no
yet another extension: a further extended form, after XT
Z
no
includes the position in what it returns
ZZ
no
returns positions as sections, [start, end]
W
no
selects by a condition
WF
no
selects by a condition, with the expressive keywords (@NextItem, @PreviousItem...)
D
no
takes a direction, forward or backward (Directional)
F
no
takes a function (the condition or the update is given as a function); the forms document also uses F for the future form, which defers the action
Many
no
works on a collection of items instead of one (the plural form)
Except
no
takes exceptions, what to leave out (the exceptional form)
U
no
returns the result without duplication

Every example is a test file of the library, run inside the library for this page; only those whose output kept every promise their file wrote are shown.

See also