varとfunction func():voidの説明

2009/08/27  as3.0, チュートリアル

そういえば、s26家では、テレビのリモコンを「チャンネルかえ」って呼んでます。

独自の文化です。他の家の人には通じないんですよね。。

そんな事が関係するお話です。

 

varは定義をするって意味なのはわかるんだけど?

 

varって定義をするためにつかいます。

 

なまえはkenだ。ってするなら

var name:String="ken"

※”name”に”ken”と言う文字列(string)を代入。 といういみです。わりとかんたんとかおもってると次のでつまづきます。

var name1:String = "ken"
a();
function a():void{
	var name2:String = "mika"
	b();
}
function b():void{
	trace(name1)
	trace(name2)
}

名前の一個目にken、二個目にmikaってつけます。

ken、mika

が、エラーが発生します。name2って何?っていうエラーです。

 

定義はしてるんですが、【a()というファンクションの中】でです。

つまりs26家のチャンネル替えって呼び名が他の家で通じないのと同じで

b()の中では、name2の名前が通じないんです。

もっといえばname2に関しては、a()の外では通じないのです。

 

この問題を解決してあげるには、下のようにしてあげます。

var name1:String = "ken"
var name2:String = ""
function a():void{
	name2 = "mika"
	b();
}
function b():void{
	trace(name1)
	trace(name2)
}

 

あんまり変わらないような気がしますが、

これで解決します。相変わらずa()の中でnama2に値をいれてますが、

=(イコールで結ぶ)は、【定義】ではなく【代入】です。名札の名前を入れ替えてあげるような事なのです。

入れ替わってるものの確認は、他からも参照ができます。

なので、この式で解決します!

 

キリトリ線

 

つぎにもうひとつりかいしづらい部分を。

 

:voidってよく見るけど何なんだろう

 

function func():voidとかってよく参考書とかにかかれているのですが、

void:というのを調べると空らしい。というのは分かるのですが、いまいちわかりません。

 

ここで、プログラムはじめての人だとつまづきそうなことですが、

functionっていうのは機能。と言う意味ですが、もともとは

【何かの働きをして、その結果を返す。】

とおもうのがただしいのです。

 

たとえば、【水道をひねる】という働きで【水】を得れます。

【寝る】と言う働きで【体力】を得れます。

 

働きと得られるもの。

それをプログラムであらわすと

function 水道をひねる(){
	return 水
}
function 寝る(){
	return 体力
}

戻ってくる値に関しては水道をひねると、水が出てくる、寝ると体力が出てくるという事は決定事項なので、

functionに明示的に書いておく事で、プログラムが最適化されます。

function 水道をひねる():水{
	return 水
}
function 寝る():体力{
	return 体力
}

では、働いても何もえれないばあいがあります。

function あばれる():?{
	return ?
}

何も返さないのであれば次のようにかけます。

function あばれる():void{
	(return)//省略可
}

つまり:voidとはファンクションの実行をしても、値をかえささない事をめいじする事によって、 プログラムの最適化をおこなっている。 という事でした。 参考として数値を返すプログラムを考えます。

これは前提として、funcも変数として扱う事ができます。 つまり、func()という値を出す事ができるのです。 ただ、functionは通常は値を返す事ができません。

function func():Number{
	return 3;
}

です。 この値を出力しようとすると

trace(func());

数値の3がえれます。次のはすうじを返しそうに見えますが、値をかえしません。

function func():void{
	var a = 3+3 
}

理由は何もリターンをしてないから。

値をかえさないからと言って何もやってないかというとそうでもないので、

複雑ですが、値はかえさなくとも、なにかをおこなっているので、

全体をみれば何かを変化させていたりします。バタフライ現象的な!

 

自分でも難しかった場所ですが、理解をすると、actionscript3.0が使い易くなるので頑張りましょう。

わからなければとりあえず変数は外に。分かってきたらわけましょう。