HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
1207
nm変数について14解決


nm

リンク

2008/12/7(Sun) 14:49:06|NO.21352

初歩的だと思われる質問で申し訳ないのですが、
質問が簡潔に説明できない為にWebでは答えを得られませんでした。
申し訳無いのですが、どなたかご教示頂けると助かります。


変数xの値の文字列を変数名に値を代入したいと考えているのですが、
どう記述したら良いのかが分かりません。

一言に説明しても分かり辛いので簡単な例を交えると、

x="y"
x=1
上記の記述だと最終的に変数xに1が代入されるだけになります。

しかし、そうしたいのではなく変数xの値(y)を変数名にし、
その変数(変数y)に1を代入したいと考えています。
詰まる所、上記での2行目に当たる部分からをどう記述したら良いのかが分からないのです…。

宜しくお願い致します。



この記事に返信する


レノス

リンク

2008/12/7(Sun) 15:05:19|NO.21355

クローンというやつですね。( 一般的に言うと参照 )

dup x, y ; x と y を同じモノにする x = 1 ; y も 1 になる。 x = "str" ; 型が変わったらだめです^^ mes "x = "+ x mes "y = "+ y stop



f(浮気中)

リンク

2008/12/7(Sun) 15:21:02|NO.21357

これは多分、

外部からテキストファイルを読み込んで
そこに

「a=5」

と書いてあったら、実際の変数aにも5を入れたい

とか言う、時々ある話ではなかろうか。



夢現因果

リンク

2008/12/7(Sun) 15:49:58|NO.21358

自分なりに解釈しましたが勘違いならごめんなさい

X="A" (文字)
Y=1 (数字)

と別々に考えてはいかがでしょうか?
変数Xが文字担当
変数Yが変数Xの中身担当という感じで



nm

リンク

2008/12/7(Sun) 15:53:18|NO.21361

素早い返答ありがとうございます。

ですが、質問が適切では無かったのかも知れません…。

変数xに"ab"が代入されていたら 変数abにyを、
変数xに"cd"が代入されていたら 変数cdにyを、
変数xに"ef"が代入されていたら 変数efにyを…
といった具合に変数xの指す変数の数値を変更したいと考えていました。

お二方の返答だと自分が考えている事と少し違うような気がするのです。
クローン変数については初めて知りましたので良くはわからないのですが…。



check

リンク

2008/12/7(Sun) 15:56:56|NO.21363

これじゃだめだよな。

switch x case "ab" ab=y : swbreak case "cd" cd=y : swbreak case "ef" ef=y : swbreak swend



nm

リンク

2008/12/7(Sun) 16:00:26|NO.21364

書き込み中での返信だったようで、遅れてすみません。

しかしながら夢現因果さんの返答でも自分の思っていた事とは違うようです…。
わざわざ考えて下さったのに申し訳ありません。



lim7000

リンク

2008/12/7(Sun) 16:07:26|NO.21365

変数名の情報はコンパイル時に失われる。
実行されているスクリプト上で変数名から変数を参照する手段はない。



夢現因果

リンク

2008/12/7(Sun) 16:10:56|NO.21367

意図するものはわかりました
選択式になりますが

dim X,10
A=2
X.A=1
repeat 10
mes X.cnt
loop

意味合いはこういう事ですよね?
今回の「A=2」は「X=ef」と解釈してください

たぶんそのままでは難しいと思います(僕の技量ではですが)
2文字ならば26×26の配列を用意する必要があると思います



sssssssss

リンク

2008/12/7(Sun) 19:52:59|NO.21379

言語仕様としてないものをなんで誰も「無理」って言わないんだ。

""でくくった文字列は文字列であって変数名ではないんだ。
わかったら解決押せ。



GENKI

リンク

2008/12/7(Sun) 20:21:40|NO.21380

NO.21357でのfさんが言う様な事をしたいのでなければ、
おそらくnmさんは、数学の変数とプログラムでの変数がごっちゃになっているんだと思います。

x = y x = 1 ならばyは y = 1 となる
数学で表記すればこんな意味合いこのとをやりたいのでしょうか?
数学とプログラムでは文法が違いますので、移植するときはそれぞれにあわせて書き方を変える必要があります。
NO.21365でlim7000さんが言うとおり、HSPでは実行中にはスクリプト上での変数名の情報が失われます。
変数は全てHSPに都合のいい別の変数名に置き換えられると考えるとわかりやすいかと。
そのほかにも数学表記との違いがあるとおもいますので、この辺のことを考慮しつつ、プログラムへの移植をする必要があります。


また、すでに何種類かサンプルや回答が上がっているとおり、プログラムに置き換える方法は何種類かあります。
変数うんぬんは目的ではなく手段です。最終的に何がしたいのかを教えていただけると最適な回答を得られやすくなりますよ。



aaa

リンク

2008/12/7(Sun) 20:37:42|NO.21382

これとかどうですか?
http://hsp.tv/play/pforum.php?mode=all&num=20260



lim7000

リンク

2008/12/7(Sun) 20:41:44|NO.21383

>> sssssssss
HSPの「言語仕様」って何だよ。コンパイラとランタイムの仕様が全てだろ。
俺は「手段はない」という言葉に「無理だ」の意味をこめたつもりなんだが。

> ""でくくった文字列は文字列であって変数名ではないんだ。
そんなことnm氏も分かってんだろ。常識をしたり顔で解説して何が「解決押せ」だ?
話し分かってないんなら出てくんな、うっとうしい。

…これは個人へ向けた罵倒。nmさんは気に病まないでOKです。



夢現因果

リンク

2008/12/8(Mon) 07:00:10|NO.21404

まず全体の数の変数Aを用意する
文字を入れる変数Bを用意する
文字を管理する配列Xを用意する
数値を管理する配列Yを用意する

*初め
変数Bに文字を入れる
変数Aの値だけ配列Xに変数Bの文字があるかどうか調べる
なければ変数Aに1を足し配列Xの文字がまだ入っていない部分に変数Bを入れる
配列Yの同じ部分に数値を入れる
*初めに戻る

でどうでしょうか?



nm

リンク

2008/12/8(Mon) 20:58:04|NO.21423

こんばんは。
昨日は当日中の返事が出来ず申し訳ありませんでした。

どうやら自分が考えていたような事を直接的に再現する事は、
lim7000さんや sssssssssさん GENKIさんの仰られたように無理であることが分かりました。

ですが、
checkさんや 夢現因果さん aaaさんの提案して下さったような
擬似的にそのような処理をさせる手段を用いる事で再現する事が出来そうです。
とても勉強になったと同時に助かりました。感謝しています。

その他の返答して下さった方もありがとうございました。

…これにて解決とさせて頂きます。



ONION software Copyright 1997-2023(c) All rights reserved.