奈良阪某/YAYAで複数(連想)配列引数渡し
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
奈良阪某/YAYAで連想配列 につづいて、YAYAで本質的に複数の...
これは配列について効果を発揮するが、 奈良阪某/YAYAで連想...
というか連想配列とコレは、クラスを実装する布石ともいえる。
* 実装関数コード [#udfbce80]
/*
_iarray = INDIVIDUAL(_array)
配列をINDIVIDUALオブジェクトにする。
*/
INDIVIDUAL{
('__INDIVIDUAL__', _argc, _argv)
}
/*
_array = DEINDIVIDUAL(_iarray)
INDIVIDUALオブジェクトを配列にする。
*/
DEINDIVIDUAL{
_argv[2, _argc - 1]
}
/*
_array = IGET(_argv, 0)
配列からINDIVIDUALオブジェクトを区別して配列として取り...
*/
IGET{
_target_index = _argv[_argc - 1]
_index = 0
_i = 0
while _i < _argc - 1 {
_value = _argv[_i]
if _value == '__INDIVIDUAL__' {
_indivisual_length = _argv[_i + 1]
if _index == _target_index {
_argv[_i + 2, _i + 1 + _indivisual_length]
return
}
else {
_i += _indivisual_length + 2
_index ++
}
}
else {
if _index == _target_index {
_argv[_i]
return
}
else {
_i ++
_index ++
}
}
}
}
/*
_iarray = IDGET(_argv, 0)
配列からINDIVIDUALオブジェクトを区別してINDIVIDUALオブ...
*/
IDGET{
_target_index = _argv[_argc - 1]
_index = 0
_i = 0
while _i < _argc - 1 {
_value = _argv[_i]
if _value == '__INDIVIDUAL__' {
_indivisual_length = _argv[_i + 1]
if _index == _target_index {
_argv[_i, _i + 1 + _indivisual_length]
return
}
else {
_i += _indivisual_length + 2
_index ++
}
}
else {
if _index == _target_index {
_argv[_i]
return
}
else {
_i ++
_index ++
}
}
}
}
* 使用方法 [#x68521b9]
** 複数の配列等を渡す [#p949ca8f]
func{
_value1 = IGET(_argv, 0)
_array1 = IGET(_argv, 1)
_value2 = IGET(_argv, 2)
_array2 = IGET(_argv, 3)
_return_array = (_array2, _value1, _value2, _array1)
_return_array
}
_a1 = (1,2,3,4)
_a2 = (11,12,13,14,15)
func(99, INDIVIDUAL(_a1), 999, INDIVIDUAL(_a2))
** 複数の配列等を返す [#me168956]
ret2array{
_ia1 = INDIVIDUAL(1,2,3)
_ia2 = INDIVIDUAL(11,12,13)
(_ia1, _ia2)
}
_ret = ret2array()
_ia1 = IGET(_ret, 0)
_ia2 = IGET(_ret, 1)
(_ia2, _ia1)
** 複数の連想配列を渡す・返す [#tee5fb85]
func{
_m = IGET(_argv, 0)
_a = IGET(_argv, 1)
_m2 = IGET(_argv, 2)
_a2 = IGET(_argv, 3)
_m = map_set(_m, 'a', _a)
_m2 = map_set(_m2, 'b', _a2)
(INDIVIDUAL(_m),INDIVIDUAL(_m2))
}
_m = map_new()
_m = map_set(_m, 'k1', 'v1')
_m = map_set(_m, 'k2', 'v2')
_m2 = map_new()
_m2 = map_set(_m2, 'kk1', 'vk1')
_m2 = map_set(_m2, 'kk2', 'vk2')
_mm = func(INDIVIDUAL(_m), 2, INDIVIDUAL(_m2), 5)
_rm1 = IGET(_mm, 0)
_rm2 = IGET(_mm, 1)
map_keys(_rm2)
--
map_keys(_rm1)
よろしければどうぞ
終了行:
奈良阪某/YAYAで連想配列 につづいて、YAYAで本質的に複数の...
これは配列について効果を発揮するが、 奈良阪某/YAYAで連想...
というか連想配列とコレは、クラスを実装する布石ともいえる。
* 実装関数コード [#udfbce80]
/*
_iarray = INDIVIDUAL(_array)
配列をINDIVIDUALオブジェクトにする。
*/
INDIVIDUAL{
('__INDIVIDUAL__', _argc, _argv)
}
/*
_array = DEINDIVIDUAL(_iarray)
INDIVIDUALオブジェクトを配列にする。
*/
DEINDIVIDUAL{
_argv[2, _argc - 1]
}
/*
_array = IGET(_argv, 0)
配列からINDIVIDUALオブジェクトを区別して配列として取り...
*/
IGET{
_target_index = _argv[_argc - 1]
_index = 0
_i = 0
while _i < _argc - 1 {
_value = _argv[_i]
if _value == '__INDIVIDUAL__' {
_indivisual_length = _argv[_i + 1]
if _index == _target_index {
_argv[_i + 2, _i + 1 + _indivisual_length]
return
}
else {
_i += _indivisual_length + 2
_index ++
}
}
else {
if _index == _target_index {
_argv[_i]
return
}
else {
_i ++
_index ++
}
}
}
}
/*
_iarray = IDGET(_argv, 0)
配列からINDIVIDUALオブジェクトを区別してINDIVIDUALオブ...
*/
IDGET{
_target_index = _argv[_argc - 1]
_index = 0
_i = 0
while _i < _argc - 1 {
_value = _argv[_i]
if _value == '__INDIVIDUAL__' {
_indivisual_length = _argv[_i + 1]
if _index == _target_index {
_argv[_i, _i + 1 + _indivisual_length]
return
}
else {
_i += _indivisual_length + 2
_index ++
}
}
else {
if _index == _target_index {
_argv[_i]
return
}
else {
_i ++
_index ++
}
}
}
}
* 使用方法 [#x68521b9]
** 複数の配列等を渡す [#p949ca8f]
func{
_value1 = IGET(_argv, 0)
_array1 = IGET(_argv, 1)
_value2 = IGET(_argv, 2)
_array2 = IGET(_argv, 3)
_return_array = (_array2, _value1, _value2, _array1)
_return_array
}
_a1 = (1,2,3,4)
_a2 = (11,12,13,14,15)
func(99, INDIVIDUAL(_a1), 999, INDIVIDUAL(_a2))
** 複数の配列等を返す [#me168956]
ret2array{
_ia1 = INDIVIDUAL(1,2,3)
_ia2 = INDIVIDUAL(11,12,13)
(_ia1, _ia2)
}
_ret = ret2array()
_ia1 = IGET(_ret, 0)
_ia2 = IGET(_ret, 1)
(_ia2, _ia1)
** 複数の連想配列を渡す・返す [#tee5fb85]
func{
_m = IGET(_argv, 0)
_a = IGET(_argv, 1)
_m2 = IGET(_argv, 2)
_a2 = IGET(_argv, 3)
_m = map_set(_m, 'a', _a)
_m2 = map_set(_m2, 'b', _a2)
(INDIVIDUAL(_m),INDIVIDUAL(_m2))
}
_m = map_new()
_m = map_set(_m, 'k1', 'v1')
_m = map_set(_m, 'k2', 'v2')
_m2 = map_new()
_m2 = map_set(_m2, 'kk1', 'vk1')
_m2 = map_set(_m2, 'kk2', 'vk2')
_mm = func(INDIVIDUAL(_m), 2, INDIVIDUAL(_m2), 5)
_rm1 = IGET(_mm, 0)
_rm2 = IGET(_mm, 1)
map_keys(_rm2)
--
map_keys(_rm1)
よろしければどうぞ
ページ名: