トップページ > プログラム > 2015年05月06日 > 2v/4EFCA

書き込み順位&時間帯一覧

7 位/176 ID中時間01234567891011121314151617181920212223Total
書き込み数2000000010011000011000007



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
Excel VBA 質問スレ Part36 [転載禁止]©2ch.net

書き込みレス一覧

Excel VBA 質問スレ Part36 [転載禁止]©2ch.net
660 :デフォルトの名無しさん[sage]:2015/05/06(水) 00:57:21.38 ID:2v/4EFCA
そんなことより参照を返せるようにしてくれないか?!
Byref引数で受け取ったものに何かした後、それをそのまま返せる機能がないのは困る。
Excel VBA 質問スレ Part36 [転載禁止]©2ch.net
661 :デフォルトの名無しさん[sage]:2015/05/06(水) 00:58:38.44 ID:2v/4EFCA
それが無理なら配列の移動(move)でもいいぞ
Excel VBA 質問スレ Part36 [転載禁止]©2ch.net
663 :デフォルトの名無しさん[sage]:2015/05/06(水) 08:28:12.14 ID:2v/4EFCA
>>662
>そのまま見ればいい
それはおっしゃる通り。
しかしそれだと既存のライブラリが使えないのです。

初期値A0 -> A1 ->A2 -> ・・・ ->An
って処理が連なっていて、一つ一つの処理は特定の関数がやるとする。
そのライブラリは、最終的なAnを求めるループ処理を抽象化してくれるんだけど、返り値を使っている。

>喧嘩売ってるのか?
いや別に。すまんかった。
Excel VBA 質問スレ Part36 [転載禁止]©2ch.net
666 :デフォルトの名無しさん[sage]:2015/05/06(水) 11:24:15.05 ID:2v/4EFCA
>>665
いや、>>663に書いたように「一つ一つの処理は特定の関数がやる」んで、その関数が参照を返すんならライブラリ側はそれに従うだけ。

>引数に設定したオブジェクトを見れば変更後の内容が取得出来る
もちろんそれはそうだ。
でも自分でループを書いて処理のつど元の引数を見るっていう動作を入れることになってしまう。
ループを書くのは避けたい。

それと訂正ですがライブラリが「使えない」というのは言い過ぎで、変数のコピーがオーバーヘッドになってしまう、という意味です。
Excel VBA 質問スレ Part36 [転載禁止]©2ch.net
672 :デフォルトの名無しさん[sage]:2015/05/06(水) 12:40:13.80 ID:2v/4EFCA
>>670
ライブラリ側では直接はどうしようもないかもしれないけど、何か考えてとリクエスト出をしておいた。
Excel VBA 質問スレ Part36 [転載禁止]©2ch.net
675 :デフォルトの名無しさん[sage]:2015/05/06(水) 17:40:54.30 ID:2v/4EFCA
>>674
ユーザーが定義した「一つ一つの処理」をする関数 → UFunc
ループを抽象化したライブラリ関数 → LibFunc
処理対象となる配列など → param

LibFunc(UFunc, param)
こうやったとき、LibFuncはUFuncの返り値を使いながらループ処理をする。
UFuncが参照を返せればこのコードは効率がいいけどそれができない。
しょうがないからライブラリ関数を使うのをあきらめてベタなループにするか、って話です。
Excel VBA 質問スレ Part36 [転載禁止]©2ch.net
679 :デフォルトの名無しさん[sage]:2015/05/06(水) 18:53:40.10 ID:2v/4EFCA
>>676
>>678
ユーザー関数はライブラリ関数を意識しないし、ライブラリ関数はいろんなユーザー関数を受け取るわけで。

UFunc1 は数値を受け取ってそれに +1 した値を返すだけ
UFunc2 は大きな配列を受け取って、ランダムな一カ所を書き換える
ライブラリ関数はそれらを繰り返し適用する。

UFunc1かUFunc2かのタイプ別にライブラリ側の関数も分けた方がいいってこと?
今は前者のタイプにしか対応していないので、後者を効率的に扱えるよう提案してみようかな。


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。