夢乃さんのスクリプト講座 ~refer編~

夢乃さん(@yumeno_star)によるreferの説明のログです
1
前へ 1 2 ・・ 5 次へ
む-にょ @meunyo

referのサンプル、これでどうだ。140字におさまらんのであぷろだ http://t.co/PpQTAZX

2011-08-22 23:38:57
む-にょ @meunyo

referに相当するものは実はCには無いですね。C++にあります。JAVAにはあったと思うけど、どうだったかな

2011-08-22 23:39:48
む-にょ @meunyo

わざわざ同じ機能の破壊型(入力変数に値を上書きして出力しちゃう、hoge2みたいな)関数と非破壊型の関数(hoge1みたいな)の作ってしまっているのが分かりにくい原因になってる気もする。すみませぬのう

2011-08-22 23:42:37
うめたろー @pollyanna1991

@yumeno_star これってグローバル変数の数式版みたいなものなんでしょうか

2011-08-22 23:41:59
うめたろー @pollyanna1991

何をやっているかは分かるんだけども、実用性というか、どうしてそうするのかというか、その便利さというのが実感できない。これは私が普段からプログラミングをしているわけじゃないから仕方がないっちゃ仕方がない。

2011-08-22 23:45:12
む-にょ @meunyo

@pollyanna1991 メリット:戻り値では1個しか数値を外に送りだせないが、refer使えば何個も送りだせます。グローバル変数だと嫌な理由:とても汎用的な計算に使う関数なので、特定のグローバル変数を使うとコードがこんがらがりやすくハマりやすくなります。

2011-08-22 23:49:40
む-にょ @meunyo

これをグローバル変数にしたくないあたりが実感できないうちは、昔わかばさんが言ってたように「グローバル変数は作るな!」でいいのかもしれない。

2011-08-22 23:51:08
む-にょ @meunyo

「戻り値でベクトル返せないのがそもそもおかしいじゃん」というのはそのとおりで、「クラスか構造体をSpEでサポートしてよ!お願い!」となります(汗)

2011-08-22 23:53:22
うめたろー @pollyanna1991

混乱ナーーーーーーーーー

2011-08-22 23:52:42
うめたろー @pollyanna1991

@yumeno_star 駄目です先生!初心者の私には難しくてよくわかりません!

2011-08-22 23:56:30
む-にょ @meunyo

@pollyanna1991 じゃもうちょっと基本から。hogehogeという関数を、event_sampleという関数内で使う場合を考えます。

2011-08-23 00:00:09
む-にょ @meunyo

@pollyanna1991 hogehogeという関数は int hogehoge(int input_a){ int rtn; rtn = input_a + 1; return(rtn); } とします。

2011-08-23 00:00:56
む-にょ @meunyo

@pollyanna1991 event_sampleと言う関数はたとえば void event_sample(){ int x, result; x=0; result = hogehoge(x); //何かresultを使う処理。省略 } とします。

2011-08-23 00:02:33
うめたろー @pollyanna1991

夢乃さんにここまでさせておいて理解出来ない自分のおつむが憎い・・・ぐぎぎ・・・

2011-08-23 00:00:45
む-にょ @meunyo

@pollyanna1991 いや、動作の仕組みへの理解がないとこのへんはピンとこないんですよ。補足しますね。

2011-08-23 00:03:14
む-にょ @meunyo

@pollyanna1991 これ、referでてきませんが、ふつーのときの動作を説明しようとしています。

2011-08-23 00:04:01
む-にょ @meunyo

@pollyanna1991 event_sampleを実行すると、中でhogehogeを実行しようとするわけですが、そのときevent_sample側のローカル変数xの中身が、hogehoge側のローカル変数input_aにコピーされます。

2011-08-23 00:12:03
む-にょ @meunyo

@pollyanna1991 で、hogehoge内で計算が進み、hogehoge内のローカル変数rtnの内容が、戻り値としてevent_sample側に戻ってきて、event_sample側のローカル変数resultに代入されます。普段の動作はこんな感じ。

2011-08-23 00:16:27
うめたろー @pollyanna1991

@yumeno_star return(rtn);は計算結果としてrtnを戻しますよ、ということですか?ちょっと戻り値というものに対する理解が怪しいです。

2011-08-23 00:08:34
む-にょ @meunyo

@pollyanna1991 そですね、rtnは1になります。voidは、型がないってことで、戻り値や引数の指定で使うと「戻り値が無い/引数が無い」って意味になります

2011-08-23 00:19:46
うめたろー @pollyanna1991

@yumeno_star この場合は戻り値はあるので引数がないってことですか

2011-08-23 00:21:08
む-にょ @meunyo

@pollyanna1991 この場合は「event_fuinc関数自体は戻り値が無い」ってことです。event_funcを実行する側でa=event_func()とかできないよ、ってこと。

2011-08-23 00:24:12
前へ 1 2 ・・ 5 次へ