みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
恥ずかしながら、繰り返し変数の一括設定方が見つかりません。^^;;
繰り返し変数を、個別でなく一括で設定する妙技があれば教えてください。
繰り返しフィールドでは当然できるのに、繰り返し変数では如何に…。
例えばこんな事が出来ないかと、
・10回繰り返し変数$xを定義して各コマに自己位置を代入し、5番目の内容5を得る。
Let($x[10]=Get(計算式繰り返し位置番号); $x[5]) → 結果: 5 が欲しいのに 無が返る
1コマ毎しか定義できないのなら、「繰り返し」変数とは一体何なんですかネ。^^
Last edited by Hiro (2015-01-25 14:24:52)
Offline
Let($x[Get(計算式繰り返し位置番号)]=Get(計算式繰り返し位置番号); $x[5])
ですが、Get(計算式繰り返し位置番号)は繰り返しフィールドでないと意味が無いので?
変数のは、繰り返しという名称ですが、実際はハッシュのようなものでしょう。(繰り返し番号に特に制限がない)
Offline
フィールドは「定義」があって、繰り返し数を指定すると1~その数まで作成されますが、変数は「定義」はない(代入すると自動作成)し、$x[10]を使ったとしても[1]や[2]ができるわけではない。
再帰で代入、はHiroさんならできてるだろうけど
Let([$i=0;$f="Let([$i=$i+1;$$x[$i]=$i];Case($i<10;Evaluate($f);$$x[5]))"];Evaluate($f))
(データビューアで確認するため$$xを使用)
カスタム関数でやるしか無いのではないでしょうか。
関数名: SetRepetitionVariable
引数: 変数名、計算式、開始、終了
Let ( [
name = 変数名 ;
formula = 計算式 ;
start = Int ( 開始 ) ;
end = Int ( 終了 ) ;
_ = Evaluate ( "Let ( " & name & "[" & start & "] = " & Evaluate ( Quote ( formula ) ) & " ; \"\" )" )
] ;
Case (
start < end ; SetRepetitionVariable ( name ; formula ; start + 1 ; end ) ;
end < start ; SetRepetitionVariable ( name ; formula ; start - 1 ; end ) ;
)
)
あんまり出来がよくありませんが、これで例えば
変数を設定[ $_; 値:SetRepetitionVariable ( "$foo" ; "Let ( $i = $i + 1 ; $i )" ; 1 ; 3 )]
とすれば
$foo[1] = 1
$foo[2] = 2
$foo[3] = 3
となります。
みなさんご意見ありがとうございます。
やはり、一括の設定方は無いようですネ。
あえて「繰り返し変数」と称するからには「繰り返しフィールド」に相当する設定仕様を期待しますが、やはり無いと云うことか…。
変数設定で変数名に繰り返し記号[]を付けようが付けまいが、個別単独変数としてしか定義できない以上、何の意味も無いようです。
たとえば、変数の名命で$変数[10]は、$変数(10)や$変数10 とか、さらに$変数[ten]や$変数(ten)や$変数ten などに差し替えても無頓着ということ。
Offline
$変数[10]には1~10という含意はないんで、$変数[Get(UUID)]とか$変数[Code("文字列")]なんてことも可能です。
Offline
他の言語、例えば JavaScript で云うところの変数オブジェクトの「配列」宣言、
var x = new Array(10)
変数xを10項配列(10回繰り返し)として一発で定義。
この一発定義がFMでできないか?でしたが、
データベース・ソフトに配列がないFMって、…使え◯ェやつ…^^;;。
Offline
御意、、配列もどきしか無い
繰り返し数が設定できる様に拡張されて行っているので、そこも思いっきり拡張して欲しい物です
Offline
カスタム関数があるんで、あんまり期待できそうにないですね。。。
変数xを配列として定義した場合に、xでまとめて引数渡しができるようになれば便利かな。
Pages: 1
[ Generated in 0.009 seconds, 7 queries executed - Memory usage: 516.41 KiB (Peak: 520.95 KiB) ]