忍者ブログ
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

順番的にちょっとこれ先にやったほうが良かったかもしれないんだけど。というかこの辺はLimechatのヘルプを見て動かしてもらったほうが早いと思うのですが、一応解説しておきます。

Limechatのスクリプトの読み込みについてですが、
[設定]→[スクリプトの設定]
の画面から、[スクリプトフォルダを開く]でLimechat用のワークスペースが開きます。
このフォルダに.jsファイルをぶち込むと、リストに名前が出てきます。
適応したいサーバーの名前と.jsファイルの交点で右クリックをすると○印が付いて、その瞬間にスクリプトのコンパイルが走ります。

コンソール画面を開いておくと、コンパイル失敗時にのみなんか色々警告がでてきますので参照して下さい。

あとはいろいろトリガがあります。
例えば、

function event::onLoad(){
本文
}

であれば、スクリプトが走る初回に本文が実行されるような内容になります。発言があった場合や、特定のキーワードに反応する、その他のトリガもありますので、詳細はヘルプを見て下さい。

function event::onLoad(){
exam();
}

function exam(){
本文
}

とすれば、起動時にexam()の中身を呼び出すことができます。
1~3で解説しているサンプルについてはこの本文のみを抽出しています。のでfunctionで囲わないと動きません。

色々なfunction(関数と呼ぶ)を作って、トリガや必要に応じてこれらを呼び出すことでスクリプトが作られていきます。

・トリガ
・処理(関数)

この2つが揃ってスクリプトが動きます。

さて、いろいろ関数を作っていくと、お互いに変数の中身をやり取りしたいといったことが生じます。
処理だけを行う関数があって、その関数に値を渡すことで回答を得るような場合です。
そのような場合はグローバル関数や引数を使うことが必要になります。

自分はソフトは専門じゃないし、仕事で使うような場面は無いので、趣味だけで偏ったり間違った知識だとは思うのですが。

関数内で宣言した変数は、その変数の中でのみ有効になります。
なので、

function A(){
var i=10;
B();
}

function B(){
print(i);
}

とやっても,
変数iをBでpurintしても何も出て来ません。というかコンパイルが通りませんね。
また、

function A(){
var i;
}

function B(){
var i;
}

なんてことをやっても、別の変数として扱われます。不便のようにも思えますが
ループを回すだけの適当な変数の時とかは便利ですね。

話は戻りますが、前の関数Bでi=10を受け取るには引数かグローバル変数を使う必要があります。

////////////////////引数////////////////////////
function A(){
var i=10;
B(i);
}

function B(i){
print(i);
}
///////////////////////////////////////////////

とすればBにiを渡すことができます。
もしくは、

//////////////グローバル変数//////////////////
var i;

function A(){
i=10;
B();
}

function B(){
print(i);
}
///////////////////////////////////////////////

と、関数の外で変数を宣言してしまえば、すべての関数を行き来できる単一の変数として扱うことができます。
関数BからまたAに戻って関数Cに別の処理をお願いしたい。などという場合にはグローバルで宣言してしまったほうが楽でが、名前の頭には気を付けなければなりません。
というか個人的には内部変数であっても名前被らないようになんとなくしてしまうんですが。

ちなみに、引数とグローバル変数は異なる性質があります。
それは、引数だと片道通行になります。
関数AからBへは変数iを渡すことはできますが、処理後の値を関数Aに戻すことはできません。
戻すには戻り値(返り値)であるreturnを使わなければなりません。が割愛します。

一方のグローバル変数は全関数で共通の変数なので、行き来するという概念ではなく、どっからでも使うことが出来る関数となります。

グローバル変数はトラブルやバグのもとになりやすいのでむやみに使用しないほうがいいですが、スクリプトの規模が小さければ特に気にする必要もないかとは思います。が、ループさせるためだけの変数とかには使わないほうがいいですね。

ユーザーが設定する部分や、やり取りの多い変数について用いると良いかと思います。

ちなみに、グローバル変数はコンパイル時に作られるので、functionで囲まなくても変数として動いてくれます。

ちなみにちなみに、関数を分けて呼び出す利点については、まさに数学的な関数とおなじで
y=x+1
の関数を用意しておけば、xがわかるだけでyが求まるので、いちいち何度も同じ計算をスクリプトで書く必要性がなくなるからです。

ってそれくらいは当たり前ですよね。

ってことでちょっと閑話休題的な第4回でした。
PR
COMMENT
name
title
text
color   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
mail
URL
pass
secret
PREV ←  HOME  → NEXT
プロフィール
HN:
komyu/シュクレール/修造
性別:
非公開
自己紹介:
こうぶつはけものみみとのーびす(♀)とエリーン
主にROとTERAとラノベと雑多なkomyuの日記帳です。
新生FF14
TERA紋章しみゅ
ROサポートツール
タイムライン
RSSボットが記事更新をつぶやくのがほとんどっス…
ROキャラクター紹介


TERAキャラ紹介

シュクレール(バサ)



syuzo(エレ)



サケマス(アチャ)


その他サブ

ウリエルキゥィス(スレLv54)

Vermillion(サラLv56)

パズドラ

157,318,362
フレンド募集中
枠なきゃ増やす
最終プレイ3日以上になったら消す
カレンダー
02 2024/03 04
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
ツリーカテゴリ
ブログ内検索
最新コメント
[04/30 のな]
[03/22 NEIN]
[03/22 NEIN]
[10/31 イロイ]
[05/02 NONAME]
Copyright (C) 2024 のーびす監察日記 All Rights Reserved.
Photo by 戦場に猫 Template Design by kaie
忍者ブログ [PR]