戻る |
汎用の変数コピー |
|
Sub assignVar(ByRef
Target As Variant, ByRef source As Variant) |
|
|
|
Set Target = Source と Let Target = Source の自動判定 |
|
|
|
|
1番目の引数 |
|
Function firstArg(ByRef a As Variant, ByRef b As Variant) As Variant |
|
|
|
Function p_firstArg( |
|
Function p_identity( |
|
|
|
aを返すだけ |
|
|
|
|
|
2番目の引数 |
|
Function secondArg(ByRef a As Variant, ByRef b As Variant) As Variant |
|
|
|
Function p_secondArg( |
|
|
|
bを返すだけ |
|
|
|
|
|
N番目の配列要素取得(絶対アドレス) |
|
Function getNth(ByRef
vec As Variant, ByRef index As Variant) As Variant |
|
|
戻る |
Function p_getNth( |
|
|
|
?getNth(iota(1,
1000000), 5234) |
|
5235 |
|
|
|
|
N番目の配列要素取得(オフセットアドレス) |
|
Function getNth_b(ByRef vec As Variant, ByRef index As Variant) As Variant |
|
|
|
Function p_getNth_b(
←これの構文糖は p__n( |
|
|
|
index < 0 の場合は後ろから取得 |
|
a = iota(1,10) |
|
changeLBound a,
16384 |
|
printS a |
|
[Dim1]: 16384 -> 16393 : Total Size = 10 |
|
? getNth_b(a,
0), getNth_b(a, -1) |
|
1
10 |
|
|
N番目の配列要素設定(オフセットアドレス) |
戻る |
index
< 0 の場合は後ろに設定 |
|
Sub setNth_b(ByRef
vec As Variant, ByVal index As Long, ByRef value As Variant) |
|
|
|
絶対位置を指定する "setNth" は、存在意義がない |
|
|
N番目の配列要素設定:moveバージョン(絶対アドレス) |
|
Function setNth_move(ByRef vec As Variant, ByVal index As Long, ByRef value As
Variant) |
|
|
|
a = iota(1, 1000000)
← 大きな配列 |
|
a = setNth_move(a, 1002, -1)
← 1カ所を書き換えて返すのも安心 |
|
printM subV(a, iota(1000, 1005)) |
|
1001 1002 -1 1004 1005 1006 |
|
|
N番目の配列要素設定:moveバージョン(オフセットアドレス) |
|
Function setNth_b_move(ByRef vec As Variant, ByVal index As Long, ByRef value As
Variant) |
|
|
複数の変数をmoveしてひとつのジャグ配列にする |
|
Function move_many(ParamArray m() As Variant) As Variant |
戻る |
|
|
以下のプロセスで配列のコピーが発生しない |
|
m = move_many(a, b, c, d, e. f. g)
← a, b, c, d, e. f. g は大きな配列 |
|
(mをmapF等に渡して何かする・・・) |
|
move_back m, a,
b, c, d, e, f
← a, b, c, d, e. f. g に値を戻す |
|
|
ジャグ配列から複数(可変長)の変数にmove back |
|
Sub move_back(ByRef
m As Variant, ParamArray ret() As Variant) |
|
|
|
move_many の逆操作 |
|
|
|
|
配列の指定位置に関数を適用する(値を埋めてmoveして返す) |
|
Function place_fill(ByRef vec As Variant, ByRef fun As Variant, ByRef indice As
Variant, _ |
|
Optional ByRef souce As Variant) As Variant |
|
|
|
a = place_fill(repeat("-",10),
p_left("abcdefghijk"), Array(2,5,8)) |
|
printM a |
|
- -
ab - -
abcde - -
abcdefgh - |
|
printM place_fill(repeat(0, 10), 1, Array(2,5,8)) |
|
0 0
1 0 0
1 0 0
1 0 |
戻る |
|
|
m = place_fill(iota(0,100), "Fizz", mapF(p_mult(3),
iota(1, 33))) |
|
m = place_fill(m, "Buzz", mapF(p_mult(5), iota(1,
20))) |
|
m = place_fill(m, "FizzBuzz", mapF(p_mult(15),
iota(1, 6))) |
|
printM m, -100 |
|
1 2
Fizz 4 Buzz Fizz 7
8 Fizz Buzz 11 Fizz 13 14 FizzBuzz 16 17 Fizz 19 … |
|
|
配列の行数 |
|
Public Function rowSize(ByRef data As Variant) As Long |
|
|
配列の列数 |
|
Public Function colSize(ByRef data As Variant) As Long |
|
戻る |
|
|
配列の全要素数または特定の軸の要素数 |
|
Function sizeof(ByRef
data As Variant, Optional ByVal axis As Long = 0) As Long |
|
|
|
Public Function p_sizeof( |
|
|
|
次数の上限なし |
|
axis = 0 : 全要素数 |
|
0 < axis <= 次元 : 指定した軸の要素素数 |
|
その他 : 1 |
|
|
定数関数 (関数オブジェクトのみ) |
|
Function p_constant(ByRef x As Variant) As Variant |
|
|
定数関数(true) (関数オブジェクトのみ) |
|
Function p_true()
As Variant |
|
|
定数関数(false) (関数オブジェクトのみ) |
戻る |
Function p_false() As Variant |
|
|
選択 if_else(値, [判定値(関数),
真の時の変換値(関数), 偽の時の変換値(関数)]) |
|
Function if_else(ByRef
val As Variant, ByRef trans As Variant) As Variant |
|
|
|
Function p_if_else( |
|
|
|
プレースホルダを置くと引数がそのまま反映される |
|
?if_else(335, Array(p_mod(, 3), ph_0, "アホ")) |
|
335 |
|
?if_else(300, Array(p_mod(, 3), ph_0, "アホ")) |
|
アホ |
|
|
Nullを他の値に置換する |
|
Function replaceNull(ByRef x As Variant, ByRef alt As Variant) As Variant |
|
|
|
Function p_replaceNull( |
|
戻る |
|
|
Emptyを他の値に置換する |
|
Function replaceEmpty(ByRef x As Variant, ByRef alt As Variant) As Variant |
|
|
|
Function p_replaceEmpty( |
|
|
|
条件に合わないものを Empty に変換しておき、あとで一気に置換するのに利用できる |
|
|
値のマスク(mask=0 の時にEmpty化) |
|
Function maskVar(ByRef x As Variant, ByRef mask As Variant) As Variant |
|
|
|
Function p_maskVar( |
|
|
指数関数 |
|
Function expN(ByRef
a As Variant, ByRef dummy As Variant) As Variant |
|
|
戻る |
Function p_exp( |
|
|
対数関数 |
|
Function logN(ByRef
a As Variant, Optional ByRef base As Variant) As Variant |
|
|
|
Function p_log( |
|
|
絶対値 |
|
Function absD(ByRef
val As Variant, Optional ByRef dummy As Variant) As Variant |
|
|
|
Function p_abs( |
|
|
加算 |
|
Function plus(ByRef
a As Variant, ByRef b As Variant) As Variant |
|
|
戻る |
Function p_plus( |
|
|
減算 |
|
Function minus(ByRef
a As Variant, ByRef b As Variant) As Variant |
|
|
|
Function p_minus( |
|
|
乗算 |
|
Function mult(ByRef
a As Variant, ByRef b As Variant) As Variant |
|
|
|
Function p_mult( |
|
|
除算 |
|
Function divide(ByRef
a As Variant, ByRef b As Variant) As Variant |
|
|
|
Function p_divide( |
|
|
|
|
剰余 |
|
Function modN(ByRef
a As Variant, ByRef b As Variant) As Variant |
|
|
戻る |
Function p_mod( |
|
|
多項式 (係数は高次->低次) |
|
Function poly(ByRef
x As Variant, ByRef coef As Variant) As Variant |
|
|
|
Function p_poly( |
|
|
min |
|
Function min_fun(ByRef
a As Variant, ByRef b As Variant) As Variant |
|
|
|
Function p_min( |
|
|
max |
|
Function max_fun(ByRef
a As Variant, ByRef b As Variant) As Variant |
|
|
戻る |
Function p_max( |
|
|
|
|
CLng(整数化) |
|
Function CLng_(ByRef
a As Variant, Optional ByRef dummy As Variant) As Variant |
|
|
|
Function p_CLng( |
|
|
CDbl(実数化) |
|
Function CDbl_(ByRef
a As Variant, Optional ByRef dummy As Variant) As Variant |
|
|
|
Function p_CDbl( |
|
|
CStr(文字列化) |
|
Function CStr_(ByRef
a As Variant, Optional ByRef dummy As Variant) As Variant |
|
|
|
Function p_CStr( |
|
|
Len関数 |
|
Function str_len(ByRef
st As Variant, Optional ByRef dummy As Variant) As Variant |
|
|
戻る |
Function p_len( |
|
|
|
|
Left関数(負の引数も可) |
|
Function str_left(ByRef st As Variant, ByRef length As Variant) As Variant |
|
|
|
Function p_left( |
|
|
|
|
Right関数(負の引数も可) |
|
Function str_right(ByRef st As Variant, ByRef length As Variant) As Variant |
|
|
|
Function p_right( |
|
|
|
|
Mid関数 |
|
Function str_mid(ByRef
st As Variant, ByRef begin_len As Variant) As Variant |
|
|
戻る |
Function p_mid( |
|
|
文字列結合関数 |
|
Function str_cat(ByRef
s1 As Variant, ByRef s2 As Variant) As Variant |
|
|
|
Function p_str_cat( |
|
|
Split関数 |
|
Function splitFun(ByRef s As Variant, ByRef delim As Variant) As Variant |
|
|
|
Function p_split( |
|
|
Join関数 |
|
Function joinFun(ByRef
m As Variant, ByRef delim As Variant) As Variant |
|
|
戻る |
Function p_join( |
|
|
最小公倍数 |
|
Function gcm(ByRef
a As Variant, ByRef b As Variant) As Variant |
|
|
|
Function p_gcm( |
|
|
|
|
最大公約数 |
|
Function lcm(ByRef
a As Variant, ByRef b As Variant) As Variant |
|
|
|
Function p_lcm( |
|
|
述語 equal |
|
Function equal(ByRef
a As Variant, ByRef b As Variant) As Variant |
|
|
|
Function p_equal( |
|
|
述語 not equal |
|
Function notEqual(ByRef a As Variant, ByRef b As Variant) As Variant |
|
|
戻る |
Function p_notEqual( |
|
|
述語 less ( < ) |
|
Function less(ByRef
a As Variant, ByRef b As Variant) As Variant |
|
|
|
Function p_less( |
|
|
述語 less_equal ( <= ) |
|
Function less_equal(ByRef a As Variant, ByRef b As Variant) As Variant |
|
|
|
Function p_less_equal( |
|
|
述語 greater ( > ) |
|
Function greater(ByRef
a As Variant, ByRef b As Variant) As Variant |
|
|
|
Function p_greater( |
戻る |
|
|
|
述語 greater_equal ( >= ) |
|
Function greater_equal(ByRef a As Variant, ByRef b As Variant) As Variant |
|
|
|
Function p_greater_equal( |
|
|
述語 is_null |
|
Function is_null(ByRef
a As Variant, Optional ByRef dummy As Variant) As Variant |
|
|
|
Function p_is_null(Optional
ByRef firstParam As Variant, Optional ByRef secondParam As Variant) As Variant |
|
|
述語 is_empty |
|
Function is_empty(ByRef a As Variant, Optional ByRef dummy As Variant) As
Variant |
|
|
|
Function p_is_empty( |
|
|
述語 is_valid |
|
Function is_valid(ByRef a As Variant, Optional ByRef dummy As Variant) As
Variant |
|
|
|
Function p_is_valid( |
|
|