ユーザー定義関数の引数について(質問掲示板)
投稿: fragile
投稿:2012/04/25 22:34:25(最新:2012/04/27 14:02:27)
ノベルゲーム制作にあたり
の様にdef文で ある程度の関数を作ったりしますよね?
その際に引数の個数を固定しない方法はありますか?
...言葉で説明しにくいので
ということで引数の個数が変わっても対応できる方法はありますか?
一応検索は掛けましたが,漏らしていたらすいません。
ツイート
def pos(x,y,n,m) L = createArray() L[0] = x + n L[1] = y + m return L end
の様にdef文で ある程度の関数を作ったりしますよね?
その際に引数の個数を固定しない方法はありますか?
...言葉で説明しにくいので
speak("銀行") -->引数は1つ speak("所持金:",mon,"円") -->引数は3つ pos(2,4,8,3) -->引数は4つ pos(1,3,5,7,8) -->エラー
ということで引数の個数が変わっても対応できる方法はありますか?
一応検索は掛けましたが,漏らしていたらすいません。
コメントする
コメントするには、ログインする必要があります。
コメント一覧
def pos(x,y,n,m,p1,p2,p3) ←使わない引数もあらかじめいれちゃう方法とか L = createArray() 呼び出しはpos(1,2,3,0,0,0)や L[0] = x + n pos(1,2,3,7,8,0)で L[1] = y + m 引数の最大は指定する必要があるけど return L 個数が代わっても対応できるようになるとか end
def pos(x,y,n,m,p1,p2,p3,pp) ←あたえた引数で場合分けする方法とか if pp = 0 pp(判断用の引数)で場合分けとか L = createArray() L[0] = x + n 引数の個数がどんなに増えても L[1] = y + m 対応できる方法はなさそう return L elsif pp = 1 L = createArray() 例外として配列を引数にとれば L[0] = x + p2 実質無限個の引数が取れるかも L[1] = y + p3 return L end end
んー。近い事はできる…?
引数が不特定個数でたくさんあり過ぎると無理だけど、与えられる形式(数値、文字、フラグ)が決まってるならば、なんとか対応できそう
注意点はやはりtrueをもし計算しちゃうと1扱いな辺りでしょーか
そりゃ0か1かのコンピュータですもんね
def qwe(a,b) #二つ目の引数bに注目してみる実験 if !b z=a else z=a+b end return z end #qwe()終 speak("qwe(3,7)=", qwe(3,7) ) #10 speak("qwe(5)=", qwe(5) ) #5 speak("qwe(8,false)=", qwe(8,false) ) #8 speak("qwe(9,true)=", qwe(9,true) ) #10 ◆ speak("qwe()=", qwe() ) #null ◆ goBadEnding()
注意点はやはりtrueをもし計算しちゃうと1扱いな辺りでしょーか
そりゃ0か1かのコンピュータですもんね
引数に書き込んだ記号がそのままdef内で使われるので無理だと思ってましたが、
上限から減らす形をとればよかったのですね。
ありがとうございました。