約 695,051 件
https://w.atwiki.jp/aster-infra/pages/121.html
一般のコマンドと同様に、シェルスクリプトのも引数が使用できます。 bashでは、特殊な変数を用いて引数などを参照できます。 引数をあらわす変数 変数名 説明 $1 シェルスクリプトファイル名(フルパス) $2 1番目の引数 $3 2番目の引数。以下順に$3、$4、・・・・$nとなる $# 引数の数 次のように、シェルを実行してみます。 $ cat test echo $0 echo $1 echo $2 echo $# $ ./test args1 ./test args1 1 引数は1つしか指定されていないので、$2は空文字列になります。
https://w.atwiki.jp/ielsord/pages/23.html
タイプ一覧 タイプ1 a~ br() ref(キャッスル位置.jpg,マップ/φ字型/タイプ1,width=256,height=300)
https://w.atwiki.jp/ninjatrader/pages/41.html
関数とメソッドはひとまとまりの命令文をカプセル化するために使用される。それらには名前と、任意選択で入力パラメーター(引数)を与えられる。それらはNinjaScript中の任意の場所で呼び出すことができる。一度記述したら、その関数やメソッドが何を行うかだけを気にすれば良い。関数とメソッドの違いは、一般的に関数は呼び出し元のルーチンに値を返すということである。C#では関数という用語を廃止していて、メソッドという用語のみを使用する。メソッドは値を返すようにも、返さないようにもできる。 メソッドの宣言 メソッドは、スクリプト中でそれを使用する前に、宣言しておかなければならない。 [Method Access] [Return Data Type] [Name] (Optional parameters) Method Access - メソッドへのアクセス方法を指定する。この項目は話が少し複雑になるので、すべての人に必要となるであろうアクセス・レベル"private"を単純に使用することにする。 Return Data Type - メソッドが返す戻り値の型を指定する。もしメソッドが値を返さないのであれば、戻り値の型として"void"を指定する。 Name - メソッドの名前、ユーザーが定義する Option Parameters - メソッドに渡す引数、任意選択で 値を返さない形式のメソッド // このメソッドは日付と時刻を出力する private void PrintDateTime() { Print(DateTime.Now.ToString()); } 上のメソッドはキーワード"void"を使用しているので戻り値を持たず、ユーザー定義のメソッド名としてPrintDateTimeを与え、宣言を"()"で完結させているので引数は無い。メソッドのコード自体は、その後の波括弧内にカプセル化されている。 値を返す形式のメソッド // このメソッドは計算を実行し、double型の値を返す private double Multiply(double input) { return input * 10; } 上のメソッドはキーワードdouble"を使用しているのでdobule型の値を返し、ユーザー定義のメソッド名として"Multiply"を与え、"input"という名前のdouble型の引数を取るように宣言している。このメソッドは値を返すので、呼び出し元のルーチンに(input * 10)の値を返すために"return"キーワードを使用している。 メソッド内でのメソッドの呼び出し // このメソッドは計算を実行し、double型の値を返す private double Multiply(double input) { PrintDateTime(); return input * 10; } 上の例では、我々のMultiplyメソッドの中にPrintDataTime()メソッドの呼び出しを付け加えている。 メソッドを使用できるところ メソッドの利用はコードのブロックを論理的に構造化するのに良い方法である。もしスクリプトの異なる部分で同一の計算を実行するところを見つけたなら、その反復的なコードをメソッドにカプセル化することは理にかなっている。 例: 複数の箇所で、過去の3つのバー(Bar)の平均レンジを計算する必要があるスクリプトがあるとする。これはレンジを計算するロジックを1つのメソッドにカプセル化するのに役立つ場面である。 最初にdobule型の戻り値を返す、メソッド名AverageRangeというメソッドを宣言する。何らかの引数を渡す必要は無い。その後に過去の3つのバーの平均レンジを計算・返却する命令を記述する。仕上がったメソッドは下のようになる。 // 過去の3つのバーの平均レンジを計算する private double AverageRange() { return ((High[1] - Low[1]) + (High[2] - Low[2]) + (High[3] - Low[3])) / 3 ; } 下の例に示すように、その後、スクリプト中のどこからでもAverageRangeメソッドを参照することができる。 // AverageRange()メソッドを2回呼び出すメソッドの例 private void ExampleMethod() { if (High[0] - Low[0] AverageRange()) { Print("The current bar range is greater than the 3 bar average range of " + AverageRange().ToString()); } } メソッド内での変数宣言 メソッド内で変数を宣言することができる。これらの変数はスコープがローカルであり、それはそのメソッドの内部でのみアクセスすることができ、メイン・スクリプトのような外部からはアクセスできない、ということを意味する。 // 変数を使用するメソッドの例 private double MyMethod() { double myDouble = 100.25 return myDouble * 10; }
https://w.atwiki.jp/stgbuilder/pages/162.html
<文字列 タブ> 表示する文字列や変数を設定。 文字列を表示する:onにすると、指定された文字列を指定されたフォントで表示。 文字列の中心を基準にする:onにすると、拡大や回転の中心位置を指定。 表示文字列:表示する文字列(半角英数字)を設定。(フォントに無い文字は表示できない) (v0.99.11以降) 引数1:変数(0-15)を指定。 引数2:変数(0-15)を指定。 引数3:変数(0-15)を指定。 表示したい変数を引数に設定し、C言語のprintfに準拠して文字列に含めることで、変数を表示。 文字列に使用した変数文字列の順に、引数1,2,3を代入。 →printf (v0.99.29以降) 引数1:ローカル変数(0-15)またはシステム変数(初期化される,保存される)を指定。 システム用:システム変数ではシステム変数の番号(0-255)も指定。 使用可能なローカル変数が、16個→64個に増加(v0.99.74以降) 引数2:ローカル変数(0-15)またはシステム変数(初期化される,保存される)を指定。 システム用:システム変数ではシステム変数の番号(0-255)も指定。 使用可能なローカル変数が、16個→64個に増加(v0.99.74以降) 引数3:ローカル変数(0-15)またはシステム変数(初期化される,保存される)を指定。 システム用:システム変数ではシステム変数の番号(0-255)も指定。 使用可能なローカル変数が、16個→64個に増加(v0.99.74以降) フォント:使用するフォントを指定。(指定しなかった場合はシステムフォントを使用) キャラクタ編集>> メイン タブ,多関節 タブ,アイテム タブ,エフェクト タブ,3Dモデル タブ,物理演算 タブ,動画 タブ
https://w.atwiki.jp/kindaidensan/pages/18.html
文字の描画 このページでは文字の描画について解説します。基本的なことは図形の描画と同じです。 まずは以下のソースコードを打ち込んでみましょう。 * iimport java.awt.Color; import densan.s.game.drawing.Drawer;import densan.s.game.manager.GameManager;import densan.s.game.manager.Updatable; public class TestGame implements Updatable { //初期化public TestGame() {// まだ使わない}//描画@Overridepublic void draw(Drawer d) {//色の設定//青にd.setColor(Color.BLUE);//塗りつぶした四角形を描画(X座標、Y座標、幅、高さ)d.fillRect(100, 200, 100, 200);//色を赤にd.setColor(Color.RED);//円の輪郭を描画(X座標、Y座標、半径)d.drawCircle(200, 400, 100);//------------//変更点開始///////////////////比較用の赤線d.drawLine(0, 50, 800, 50, 1);//フォントサイズ指定d.setFontSize(20);//黒d.setColor(Color.BLACK);//左下座標を指定して文字を描画d.drawString("黒文字L", 0, 50);//中心を指定して文字を描画d.drawStringCenter("黒文字C", 400, 50);//右下座標を指定して文字を描画d.drawStringRight("黒文字R", 800, 50);//フォントサイズ指定d.setFontSize(200);//オレンジd.setColor(Color.ORANGE);//中心に大きく描画d.drawStringCenter("中心", 400, 300);///////////////////変更点終了//------------ }//更新@Overridepublic void update() {// まだ使わない }//初期化public static void main(String[] args) {//ゲームを管理するクラスを取得GameManager gm = GameManager.getInstance();//このメソッドでウインドウを表示する//引数はそれぞれ(幅, 高さ, タイトルバーに表示する文字)gm.createFrame(800, 600, "テストゲーム");//更新と描画を担うオブジェクトを設定gm.setUpdatable(new TestGame());} } このコードを実行すると画像のようになります。 解説 今回も書き加えたのはdrawメソッドの中身ぐらいです。(30~47) 前回説明したメソッドの詳細は省きます。 33行目のsetFontSizeは描画する文字のサイズを指定します。引数にサイズの数値を指定します。 サイズは縦幅が数値と同じピクセルぐらいになります。文字やフォントによってかなり違うのでちょっとずつ変えてって確かめたほうが良いです。 デフォルトのサイズは変更される可能性がある上に、別の場所でサイズを変えるとそのサイズが次のループでも適用されます。かんたんなデバック出力以外ではできるだけサイズを指定しましょう。 37~41行目のdrawString,drawStringCenter,drawStringRightメソッドは文字を描画するメソッドです。すべて引数は(描画する文字列、X座標、Y座標)です。 それぞれの違いは指定した座標からどう文字を描画するかです。drawString 指定した座標が文字の左下になります。つまり左詰めでベースライン(文字の下端)指定です。 drawStringCenter 指定した座標が文字の中心になります。つまり中央揃えでセンターライン(文字の中心)指定です。このメソッドは他と違って縦も中心に合わせるので注意してください。 drawStringRight 指定した座標が文字の右下になります。つまり右詰めでベースライン指定です。 文字の近くを通っている赤い線がメソッドで指定してるY座標を示しているのでそれを参考にするとわかりやすいです。 文字は図形と違ってY座標は基本的に下側を指定することに注意してください。 文字描画でもsetColorで指定した色が引き継がれます。 文字関連ではsetFontというメソッドも存在します。フォントを指定するメソッドです。自作フォントなんかも指定できます。。詳細はsetFontのjavaDocとその引数に指定するFontのJavaDocを参照してください。 FontについてはJavaの標準ライブラリのクラスなのでググればいろいろ出てきます。ただしjava.awt.Fontであることを確かめたほうが良いです。(別パッケージで同じ名前のクラスが他にある) Drawerについて詳しくはhttp //kiki33.bitbucket.org/densan/s/game/drawing/Drawer.html まとめ 今回は文字描画について解説しました。こちらはゲームでも普通に使います。ただ、見た目を重視するならちゃんとしたフォントを使ったりフォントを自作したり数字とかは画像にしたりします。ただ扱いがかんたんなのでデバック出力とかに便利です。 名前 コメント すべてのコメントを見る
https://w.atwiki.jp/slvip/pages/57.html
関数っていうのはLSLで元から用意されてる物と ユーザが自分で作れる物がある 関数 まずはLSLに元からある関数の使い方の説明 関数を使うことで ある動作を一つにまとめる ←とっても大事 ある値を参照する ってことができるんだ 関数名1(引数); そして関数名の後に続くこの() これはこの関数1にこの引数を使って処理をしてくれ!ってこと ちなみに・・ LSLで始めから用意されてる関数は 全て関数名の先頭にllって書いてある わかりやすいな たとえばllSetPos関数を例にしてみると llSetPos( 5,10,15 ); llSetPos関数っていうのは引数の値にプリムを移動させるという使い方 この関数を動かすことで動かしたプリムは 5,10,15 の座標に移動させられる 引数は関数によって複数要求されることがあるんだけど そういった場合は幾つかの引数を,(カンマ)で区切ってやる必要がある 関数名1(引数1,引数2); また、この引数ってのは関数によって使える型が決まってる 今度はllOwnerSayを例にして何の型を使えって言われてるのか調べてみよう llOwnerSay 上のほうに llOwnerSay(string msg) って書いてあるのがわかると思う どういうことかっていうと llOwnerSayに必要な引数はstring型1つだけ って意味なので引数には文字列型を使わないといけないってこと llOwnerSay("aiueo"); llOwnerSayは自身に引数を表示するって意味なので こうすることで自分の画面にaiueoと表示される ある値を参照する関数っていうのは 関数を実行することによって値を参照することができる vector v = llGetPos(); llGetPos関数は実行することで今ある座標を参照することができる 参照された値は代入演算子で別の変数に代入する必要がある こうやって色々な関数を使って 現在時刻を調べたり風の向きを調べたりすることができるんだ ユーザ関数 ユーザ関数っていうのは 今まで説明してた関数とは逆で 関数を呼び出した時の処理を自分で作ってしまおうという事 myFunction(5); こんな感じで自分で作ったmyFunctionという関数に5という引数を付け加えて実行することができる だけど実行した時に起こす処理を書く必要があるんだ 書く場所はステートの外側&ステートより前に書かないといけない 書き方はこんな感じ 返す型 関数名(受け取る引数){ 処理 return 返す値; } 返す型、返す値ってのは イベント内 myFunction(5); を実行した時にかえって来る型と値の事 ここに書いた型と値が帰って来るので integer myFunction(integer n){ 処理 return 10; } こんなかんじで書いた場合は型をinteger型にしてるので イベント内 integer a = myFunction(5); という感じで実行すれば実行した場所に整数型の値を返すことができる 受け取る引数っていうのは イベント内 myFunction(5); これの場合は整数型の5という引数を送ってるので integer myFunction(integer n){ 処理 return 10; } 関数の中の変数nで5という値を取得することができる このnは関数の中で使うことができる integer myFunction(integer n){ integer m = n * 10; return m; } こういう関数を用意しておいて イベント内 integer new = myFunction(5); こうやって実行させると newの中には5*10の値が入ってることになる 関数の中で処理を実行させたい場合は この関数の中に用意された関数を書いてやればおk integer myFunction(){ llOwnerSay("run function"); return 0; } こういう関数を用意しておいて(引数は必要ないので適当に0を返しておく) イベント内 myFunction(); こう実行させると自身の画面にrun functionと表示される
https://w.atwiki.jp/fsharpmaster/pages/27.html
StatefulFunc/StateBuilderとは何なのか これまで書いてきたことを読んでいただけると、StatefulFunc/StateBuilderについて「入力してコンパイルすると確かに動くけど、なぜどのように動いているかさっぱりわからない」という状態は脱出できると思います。しかしこれは単に機械が動く仕組みを理解できただけで、その設計意図や目的が理解できたわけではありません。第一、普通のプログラムを読むときにこのような読み方はしません。変数の意図などを考え、その値がどのように使われた結果、どこでどのようなことが起こって結果が発生しているのか、という道筋でプログラムを解釈するのが普通だと思います。 ここでは、StatefulFunc/StateBuilderが、意味的にどのように動いているかを解説したいと思います。とはいえ、StateffuiFunc/StateBuilderはHaskellでいうところのStateモナドそのもので、「Stateモナド」でググれば日本語の解説は結構ひっかかるのですが、後発を承知であえて僕なりにF#上で解説していきたいと思います。 状態を引数にするということ このプログラムを見て最初に感じる違和感は、実行時に与える引数の違いです。普通のプログラムでは、関数の挙動のパラメータのようなものを引数にし、結果を戻り値やプロパティ、インスタンス変数、参照型の引数、言語によってはグローバル変数の値の変化として戻すのが普通ですが、このプログラムは実行時に状態を引数に取り状態を戻しているのです。この違いは何なのでしょうか。 関数型言語の勉強をしていると、時折世界の天地がひっくり返ったような、ものの裏表がひっくり返ったようなトポロジカルかつドラマチックな転回を感じることがあるのですが、この違いはまさにそういった類のものです。 まず普通の手続き型プログラムの実行イメージを確認してみましょう。 状態は、プログラム空間全体にちらばっており、見える範囲で参照、変えられる範囲で変更できる。 関数は実行パラメータを引数にとり、状態や参照型の引数の値を変えるか戻り値を返すことで実行結果を返す。 これに対し、StetefulFunc/SteteBuilderは以下のように動いていることになります。 ビルダーのインスタンス(コンピュテーション式)に実行パラメータを渡し、実行パラメータを内包した関数(この場合StatefulFunc)を作成する。 作成した関数に初期状態を渡し、結果として変わった状態を返す。 プログラムの裏表が枕カバーのようにひっくり返っている感じが伝わるでしょうか。 すでにご存知でしょうが、関数型言語ではグローバル変数は最も忌み嫌われるものです(OOPでも相当に嫌われていますが)。しかし、状態自体を引数で渡せるなら、変化した状態を受け取ることもできるわけです。これがSteteBuilder(Stateモナド)の基本的な考え方です。 GetStateの役割 状態ワークフローが「状態」を引数にするのはいいとしても、これをそのまま実践しようとすると、全ての関数が引数stateを取って戻り値と一緒にstateを戻すように作らないといけなくなります。これでは関数の参照透明性を守るためとはいえ、払う代償が高くなりすぎます。そんなことが強要されてしまうような言語は、結局誰にも使ってもらえなくなるでしょう。 この不便を解消するために考えられたのが、この状態ワークフロー(StatefulFunc/SateBuilder、Stateモナド)なのです。これを使うと、明示的に処理に必要なものを引数として記述するだけで、それ以外のものをまるで机の下から同時に受け渡すようなことができます。 Add関数を例に見てみましょう。 let Add x = state { let! currentTotal, history = GetState do! SetState (currentTotal + x, (sprintf "%dを加算" x) history) } ここで、1行目の意味を理解するためGetStateの定義を見ると、 let GetState = StatefulFunc (fun state - state, state) という、実に素っ気ない関数になっています。ワークフローを読み慣れないうちは、 let! currentTotal, history = GetState とう文と、GetStateの定義を見て、なんとなく StatefulFunc (fun state - let! currentTotal, history = state, state in ~) というような読み方をしてしまい、currentTotalとhistoryに同じものが入るような理解にはまってしまいそうになりますが、ここにはまってしまうとなかなか脱出できなくなります。何が違っているのでしょう。 実装だけを見ると、このGetState関数は、「stateを受け取って、同じその値を持つペアを作って返す関数を持つStatefulFuncを返す関数」ということになります。間違ってはいないのですが、この一見無意味に思える関数には大きな意味があります。 実はこのとき作成されるペアは、 (机の上で明示的に渡される値, 机の下でナイショで渡される値) という意味のペアになっているのです。 GetStateは、こっそり机の下で受け取ったstateを机の上に出しながら、同じものを机の下からも同時に受け渡す関数、という風にイメージしてもらってもいいと思います。ということを踏まえて、Addの定義を見てもらうと、 let! currentTotal, history = GetState という代入文で、左側の変数に束縛されるのは、GetStateが返したペアのうちの左側、つまり机の上で渡したものだけがここに束縛されてくると解釈できます。このlet!の=は、単に=で結合されているので左右が等しいようなイメージを受けますが(このへんは、Haskellの表現のほうが真っ当な印象を受けます)、この間には見えないミゾがあり、机の下で渡された値はそのミゾに落ちて机の下に飲み込まれたようになっているのです。 SetStateの役割 let SetState newState = StatefulFunc (fun prevState - () , newState) 一方、SetStateは何をしているのでしょうか。実装の字面だけを見ると、「ステータス1を受け取り、『ステータス2を受け取って、()とステータス1のペアを返す関数を持つStatefulFunc』を返す関数」ということになります。 このステータス1、2とは何かというと、 ステータス1は、机の上で明示的に受け渡された値 ステータス2は、机の下からナイショで受け渡された値 という風に理解してもらえるといいと思います。 つまり、SetStateは、机の下で受け取った値を無視して(捨てて)、「机の上で()を渡し、机の下では机の上で受け取った値を渡すStatefulFunc」を作っていたのです。 この流れを図にすると以下のようになります。 この動きを支えているのが、、StateBulderのBindメソッドです。Add展開編の項8で展開された式を追うと、机の上の値(赤い線)は「result → (currentTotal, history) へ、机の下の値(緑の線)がupdateStateからinitialStateに渡され、prevStateとなって消えていくのが分かるでしょう。 机の上に出さないようにしてみる それでは、この値の受け渡しを机の上に出してやる、というのをやめて、全て机の下でおこなうことはできるのでしょうか。SetState/GetStateを使わないようにすればこれが可能になります。 先ほどSetStateの説明で「ステータス2に机の下を通ってきた値がくる」という説明をしましたが、このステータス2に直接入力のstatusが渡るStatefulFuncを考え、その入力を使って()と新しいステータスのペアを作ればいいのです。 ステータスを机の上に出す必要もないので、1行目は完全に不要になります。また、ステータス1は来ないので引数で渡す必要もなくなり、結局以下のようになります。 let Add2 x = StatefulFunc(fun (currentTotal, history) - (), (currentTotal + x, (sprintf "%dを加算" x) history)) この式に見覚えはありますか? この式は、Add展開編の最後に出来上がった式と全く同じものです。Add展開の長い作業は、意味で言えば机の上と下で受け渡されているものが同じであることに着目して、机の上→机の下に受け渡し場所を変えただけだったのです。簡約の過程でresultとupdateStateが両方ともinitialStateに置き換えられ、(currentTotal, history)になってすり替わっていく様子を観察して下さい。 ちょっとだけ机の上に出してみる 裏で渡されるステータスのうち、どれを机の上にだして作業するか、についてはBuilderの設計に依存しているわけではなく、GetState/SetStateの仕組みをちょっと修正するだけで変更することができます。ためしに、currentTotalだけを机の上に出して作業するように変更してみましょう。 let GetState2 = StatefulFunc (fun (currentTotal, history) - currentTotal, (currentTotal, history)) let SetState2 newTotal comment = StatefulFunc (fun (currentTotal_under, history_under) - () , (newTotal, comment history_under)) let Add2 x = state { let! currentTotal = GetState2 do! SetState2 (currentTotal + x) (sprintf "%d を加算" x) } let calculatorActions2 = state { do! Add2 3 do! Add2 4 } let res, stat = Run calculatorActions2 (0, []) 実行結果 val calculatorActions2 StatefulFunc (int * string list),unit = StatefulFunc fun Delay@30 val stat int * string list = (7, ["4 を加算"; "3 を加算"]) val res unit = () Add2の1行目を見ると、historyが表に出てきていないのが分かります。その代わり、historyに追加する文字列をSetState2に与えるようにしています。 このように必要なものだけ表に出して作業をしてもいいのですが、出すものの種類ごとにGetState/SetState的なものを書く必要があります。これはこれで無駄な苦労のような気もしますので、「出すときは全部出す」というのもまた潔い決断かもしれません。 まとめ calculatorActionsも、同じような考え方で動いていますが、こちらは机の上に一切何も出さず、全てのステータスが机の下でやりとりされています。こちらも興味がある方は追ってみてください。do!の展開が do! expr in expr2 ⇒ b.Bind(expr, fun () - expr2) のように、Bindの二つ目の引数になっている匿名関数の引数が()になっている理由が納得してもらえると思います。 この、床下配線感覚というか、見えないところで汚れ作業をするイメージは、OOPの「内側からのポリモルフィズム」に似ていますが、業務側で書く関数(AddやcalculatorActions)の参照透明性が守られると言う点が大きく異なります。関数の戻り値に影響を与えるのは引数と不変の自由変数だけ、関数が外に影響を与えるのは戻り値だけというルールを高潔に守ることで得られるものは大きく、それを守るためにこのような仕組みが用意されているのです。 実はここで説明したのは最初にも書いたようにHaskellのStateモナドの仕組みそのものです。 これだけ書いておいて言うのもなんですが、Stateモナドは決してやさしいものではありません。高階関数、カリー化、糖衣構文、多相性、ラムダ計算といった関数型言語のトピックを総動員しなければ納得できるものではありません。「Programming F#」が説明を完全に投げ出していることからも分かるように、これを説明する側にも相当なエネルギーが必要になります。 インターネット上にはこの文も含め「モナドの解説」が沢山あります。それらと合わせてこの文を根気よく読んでもらえることで、読者のモナド理解の一助になれれば幸いというものです。 (文責:片山 功士 2012/01/20) 今日: - 人 昨日: - 人 トータル: - 人
https://w.atwiki.jp/officewiki/pages/50.html
https://w.atwiki.jp/my-sql/pages/41.html
HOME 関数 文字列関数 INSTR INSTR INSTR(str,substr) 文字列 str に最初に出現する部分文字列 substr の位置を返す。これは LOCATE() の 2 つの引数を使用する形式と同じだが、引数の順序が入れ替わっている。 mysql SELECT INSTR( foobarbar , bar ); - 4 mysql SELECT INSTR( xbar , foobar ); - 0 mysql SELECT INSTR( あいうえお , う ); - 3 この関数はマルチバイト文字に対応している。 MySQL 3.23 では、この関数では大文字と小文字が区別されるが(ケース依存)、バージョン 4.0 では、どちらかの引数がバイナリ文字列の場合にのみケース依存になる
https://w.atwiki.jp/mojidekai/pages/1.html
文字でかいんです