• ベストアンサー

functionの()の中の=とは?

Kizzの回答

  • Kizz
  • ベストアンサー率47% (30/63)
回答No.3

関数(function)の引数内で = 付きで定義した値は「デフォルト値」となります。 関数呼び出しの際、本来あるべき引数が省略された場合に採用されます。 デフォルト値設定をすべきか否かについては、ケースバイケースだと思うのでお勧めはあえて・・なにしておきます(笑) ※まず(前提として)どの言語に限らず、呼出する・されるの仕様は整合がとれているように設計・開発者は理解の元に実装すべきは「当たり前」の話。 ※有効と思えるケースとして例をあげると、すでにいくつものスクリプト中で使っている関数に引数を追加したい時には有効な手かもしれませんね。

関連するQ&A

  • ファンクション内での円マークについて

    値をカンマ形式で変換するファンクションを作成しています。 ファンクションの内容は下記の通りです。 CREATE FUNCTION Test (DECIMAL) RETURNS VARCHAR(15) AS ' DECLARE arg ALIAS FOR $1; str VARCHAR(16); BEGIN str := ''''; SELECT TRIM(TO_CHAR(arg, ''\\9,999,999,999'')) INTO str; RETURN str; END; ' language 'plpgsql' ; 上記のコマンドを実行したらワーニングが出力されました。 下記が出力したワーニングの内容です。 WARNING: nonstandard use of \\ in a string literal 行 2: ' ^ HINT: Use the escape string syntax for backslashes, e.g., E'\\'. WARNING: nonstandard use of escape in a string literal 行 1: SELECT TRIM(TO_CHAR( $1 , '\9,999,999,999')) ^ HINT: Use the escape string syntax for escapes, e.g., E'\r\n'. QUERY: SELECT TRIM(TO_CHAR( $1 , '\9,999,999,999')) CONTEXT: SQL statement in PL/PgSQL function "test" near line 6 CREATE FUNCTION ※一応、ファンクションは作成できたんですで・・・ ファンクションを実行したらワーニングと結果が出力されました。 SELECT test(10000); 下記が出力したワーニングの内容です。 WARNING: nonstandard use of escape in a string literal 行 1: SELECT TRIM(TO_CHAR( $1 , '\9,999,999,999')) ^ HINT: Use the escape string syntax for escapes, e.g., E'\r\n'. QUERY: SELECT TRIM(TO_CHAR( $1 , '\9,999,999,999')) CONTEXT: PL/pgSQL function "test" line 6 at SQL statement test -------- 10,000 (1 行) 下記のように円マークの箇所にEをつけたりしましたがワーニングが解消する事はできませんでした。多分、私の記述がいけないような気がします。 すみませんがどのように記述すればいいのでしょうか。 ご教授いただけませんでしょうか。 宜しくお願いします。

  • 【VBA】Function内のValueについて

    VBAについて教えてください。 以下のFunctionで定義したCells(i, "○").Valueに値が入力されません。 iのカウントアップまでは正常に行われています。 このFunctionはExcel上で関数で「=Order_Buy(1111,テスト)」のようにして呼び出しています。 ちなみにSubで定義して単体で実行すると該当セルに値が入力されました。 何が問題か、ご教授いただけないでしょうか Public Function Order_Buy(ByVal code As String, ByVal meigara As String) As String Dim i As Integer i = 3 Do Until Cells(i, "M") = "" i = i + 1 Loop Cells(i, "M").Value = Now Cells(i, "N").Value = code Cells(i, "O").Value = meigara Order_Buy = "test" End Function

  • MATLAB ベクトル化(functionの繰り返

    MATLAB Lのプログラムを組んでいます。 for loop では実行時間が長すぎるため、改善したいです。そこでベクトル化を思いつきましたが、「functionの実行を繰り返す」場合の書き方がいまいち分からないので、教えていただきたいです。 元のループ処理は以下の通りです。 for n= 1:length(MeasuredData) SimulatedDataSet(n) = func1(param1(n), param2(n), param3(n)); end 宜しくお願い致します。

  • gcdとlcmについての証明

    最大公約数gcdと最小公倍数lcmについての質問です。 正の整数n1,n2,......,nlについて gcd(n1,n2,n3,....,nl)=gcd(gcd(gcd(n1,n2),n3),...,nl) を示せ。 という問題なのですが、これはどのように証明すればよいのでしょうか?nが3つまでのは証明できたのですが、l個での証明の仕方が分かりません。 lcmについてもgcdの証明と同様にすれば示せるのでしょうか?

  • iアプリで改行する方法を教えて下さい。

    iアプリで改行する方法を教えて下さい。 Graphics g=getGraphics(); String text = "ああああ\nいいいい\nうううう\n"; g.drawString(text,0,12); というようにしても、 \nのところで改行はされず、 結局、 ああああ\nいいいい\nうううう\n と出力されてしまいます。 \n を /n としてみてもダメでした。 また、 String text = "ああああ いいいい うううう"; としても、ダメでした。 iアプリでは、一体、どうやって改行を行うのでしょうか?

    • ベストアンサー
    • Java
  • functionの中身が同じな場合の呼び出し方法

    functionの中身が同じな場合の呼び出し方法 実際はfunction内にもっと長いスクリプトが入るのですが、例えばキー入力とマウスによるボタンクリックのファンクションで起こる内容が同じな場合、なんども同じことを記述するのは面倒です。 例えば下記の場合、ファンクションの内容はどこか1か所のみに記載して、あとはそれを呼び出すのみの形にしたいのですが、どのようにすれば実現できるでしょうか?? hoge1.onRelease = function(){ getURL(""); } keyListener.onKeyDown = function(){ if(Key.getCode() == 57) { getURL(""); } 初心者の質問ですいませんが、よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • 極限の問題を教えて下さい。

    lim{n→∞}sin(ni)/exp(n) の値を求めたいのですが、どうしたらいいかわかりません。教えて下さい。sin(ni)のniはi(虚数単位)のn倍です。よろしくお願いします。

  • 統計学

    N=n1,n2,…nk k項分布Mn(n:p1,p2,…pk)(n=n1+n2+n3…nk)に従うとき次のカイ自乗統軽量 X^2=Σ((ni-n*pi)^2)/n*piの平均と分散を求めたいのですがこの場合は モーメント母関数を使えばいいのでしょうか??またこの場合、確率変数はnということでよろしいのでしょうか?? さっぱりわかりません。どうか教えてください。

  • 経路探索の問題

    http://www.i.u-tokyo.ac.jp/edu/course/m-i/pdf/2002imim.pdf の、問題3について質問なのですが、 問1は、  (1) 線形リストとして、n回で到達できるセルの情報を与えると、n+1回で到達できる線形リストを返す関数を考える。返すリストの作成方法は、n回で到達できるセルの前後左右を調べて、すでに調べたセルや障害物のセルでなければ、そのセルをn+1回で到達できるセルとしてメモし、返す線形リストに追加する。  (2) int l[M][N];//特定のセルまでの距離をメモする配列。最初にすべて-1をいれておく。障害物には-2を入れておく。 class list{   int i,j;   list *next;   list(){     next=0;   } } //n回で到達できるセルのリストをpl、n+1階で到達できるセルのリストを返すポインタをnlとする。 void getNextCellsList(list *pl,list *nl){   list *tt=pl;   list *t;   int i,j;   nl=0;   while(tt){     i=tt->i;     j=tt->j;     if(i>0&&l[i-1][j]==-1){       l[i-1][j]=l[i][j]+1;       t=nl;       nl=new list;       nl->i=i-1;       nl->j=j;       nl->next=t;     }     if(j>0&&l[i][j-1]==-1){       l[i][j-1]=l[i][j]+1;       t=nl;       nl=new list;       nl->i=i;       nl->j=j-1;       nl->next=t;     }     if(i<M-1&&l[i+1][j]==-1){       l[i+1][j]=l[i][j]+1;       t=nl;       nl=new list;       nl->i=i+1;       nl->j=j;       nl->next=t;     }     if(j<N-1&&l[i][j+1]==-1){       l[i][j+1]=l[i][j]+1;       t=nl;       nl=new list;       nl->i=i;       nl->j=j+1;       nl->next=t;     }     tt=tt->next;   } } と、したのですが、このgetNextCellsList関数を一回使う時間計算量は、O(n)としていいのでしょうか? また、もしそうなら問2の時間計算量は、 (getNextCellsList関数を一回使う時間計算量)*M*N=O(n)*O(n^2)=O(n^3) 空間計算量は、 (セルまでの距離をメモする配列の数)+(n回で到達できるセルの情報)=O(n^2)+O(n)=O(n^2) となるのでしょうか? あと、この問題の(M,N,D)のオーダーで評価せよというのはどういう意味として捉えればいいのでしょうか?O(n^3)などと書いておくだけで良いのでしょうか? 問3の時間的及び空間的に効率化する方策としてはどのようなものが考えられるのでしょうか?これは、自力では全然ろくな方法が思い付きませんでした。。。 宜しくお願いします。

  • 粒子の分布とエネルギーの和

    相互作用の無い同種粒子がN個あり、全粒子のエネルギーの総和がUである系を考える。粒子の取り得るエネルギー準位をE1,E2,E3,..とし、N1,N2,N3,..個の準位が占められているとすると、 ΣNi=N  (1) ΣEi・Ni=U (2) が成り立つ。(iは添え字) ↑のような文章が教科書に書いてありました。ある準位EiにNi個の粒子が占めているとすれば、その準位にある粒子のエネルギーUiはEiをNi倍してあげれば良いので、その系全体のエネルギーはU=ΣEi・Nとなるのは分かります。ところが別の資料を読んでみると、用いているのは個数Niではなく分布関数niで表現していたのですが、本当にどちらも同じ事を表していると言えるのか疑問です。 例えばあるエネルギー準位Eiに粒子が占めている確率がni=1/2=0.5だとすれば、そのエネルギー準位にある粒子のエネルギーは、Ui=0.5Eiとなってエネルギーが本来の値よりも減るというような変な表現になり、ここで簡易のためにどの準位も粒子の占有確率がn=0.5だとすると、やはり全エネルギーも減る事になります。元々はエネルギー自体が増減する訳ではありませんが、系全体で統計的に見ると粒子が占めていない確率もまた0.5なのだから、考えているエネルギー準位の単なる和ではなくそれよりも減少すると予想される。つまりU=ΣEi・niは、数学で言うエネルギーの期待値の事を言っているのですか?