ab.com コミュニティ https://www.activebasic.com/forum/ |
|
Functionの戻り値の書き方 https://www.activebasic.com/forum/viewtopic.php?t=716 |
ページ 1 / 1 |
作成者: | sk [ 2006年2月11日(土) 12:32 ] |
記事の件名: | Functionの戻り値の書き方 |
Functionの使い方ですが説明書では コード: Function name ([arglist]) [As type] [commands] [name = expression] [Exit Function] [commands] [name = expression] End Function name プロシージャ名を指定します。 arglist 引数を指定します。カンマ(,)で区切り、複数指定することができます。(詳細...) type 戻り値のデータ型を指定します。となっていますが、 関数名を変更した時に戻り値のnameまで書き換えるのが面倒なので Cのreturnみたいな関数名に関係ない命令を追加していただきたいです |
作成者: | Sinryow [ 2006年2月11日(土) 19:53 ] |
記事の件名: | Re: Functionの戻り値の書き方 |
前もそんな話題あったような気がしますね。 ReturnだとGosubの終了という意味になってしまうので,こんなのを考えてみました。 コード: Function FindSpace(s As String) As Long Dim i As Long, v As Long For i = 1 To Len(s) If Mid$(s, i, 1) = " " Then Exit Function(i) End If Next End Function(0) |
作成者: | 山本 [ 2006年2月12日(日) 18:52 ] |
記事の件名: | |
何気に私も同じ悩みを持っていました。 SubとFunction、戻り値の ある/なし を変えるだけでも、数箇所の変更が必要になってしまいますよね。こういうところが冗長的なのがBasic言語だと言われるとそれまでなのですが… この際なので、 "Exit Sub" や "Exit Function" などをやめて(というか、それに追加する形で) Exit 0 とかできるようにしちゃうのはいかがでしょうか。ようは、下記のようなコードがまかり通るということになります。 コード: Function FindSpace(s As String) As Long Dim i As Long, v As Long For i = 1 To Len(s) If Mid$(s, i, 1) = " " Then Exit i End If Next Exit 0 End Function |
作成者: | sk [ 2006年2月13日(月) 11:04 ] |
記事の件名: | |
引用: "Exit Sub" や "Exit Function" などをやめて(というか、それに追加する形で)
そうなればいっそのこと関数名の前にあるSub Functionも無くして
Exit 0 とかできるようにしちゃうのはいかがでしょうか。ようは、下記のようなコードがまかり通るということになります。 コード: FindSpace(s As String) As Long Dim i As Long, v As Long For i = 1 To Len(s) If Mid$(s, i, 1) = " " Then Exit i End If Next Exit 0の様にしてしまうのはどうでしょうか? 戻り値の有無は関数名() As 型の有無で判断するとか これはこれでBasicからスゴイ勢いでかけ離れていくという問題がありますが… あと戻り値が偽の場合にいちいちExit 0と打つのも面倒なんで Exitだけの記述ならFALSEを返すようにしていただきたいです |
作成者: | Sinryow [ 2006年2月13日(月) 15:43 ] |
記事の件名: | |
> そうなればいっそのこと関数名の前にあるSub Functionも無くして コード: FindSpace(s As String) As Long Dim i As Long, v As Long For i = 1 To Len(s) If Mid$(s, i, 1) = " " Then Exit i End If Next Exit 0> の様にしてしまうのはどうでしょうか? > 戻り値の有無は関数名() As 型の有無で判断するとか それは無理ですよ・・・Asはキャストにも使われるので。 |
作成者: | sk [ 2006年2月14日(火) 01:35 ] |
記事の件名: | |
すみません。キャストのことを完全に忘れてました |
作成者: | イグトランス [ 2006年2月14日(火) 18:41 ] |
記事の件名: | |
SubとFunctionの区別を無くすことも賛成ですが,よい案が思い浮かびません。 しかしSub/Functionそのものをなくすのには反対です。 キーワード強調されるなどの点で,目印としてわかりやすいからです。 とりあえずはExit時にSub/Functionを書く必要がなくなるだけでだいぶ有り難いです。 > Exitだけの記述ならFALSEを返すようにしていただきたいです これを実現するとしたら,もっと広く使えるようExitで値が指定されなかったときに 何を返すかを指定できるようにしてはどうでしょうか。 コード: Function FindSpace(s As String) As Long = FALSE ' ここがみそ。 ' 略 Exit 'Exit FALSEと同じになるという具合。 End Function |
作成者: | konisi [ 2006年2月15日(水) 23:48 ] |
記事の件名: | むしろ・・・ |
まさかとは思いますがSub/function内に宛ててgosubを使うことは先ず無いと思うので、Sub/Function内においてreturn文を「gosubの折り返し地点」ではなくC等のように「返り値の設定及び抜ける位置」という解釈には出来ないものでしょうか。>>山本さん |
作成者: | 山本 [ 2006年2月16日(木) 01:28 ] |
記事の件名: | |
引用: まさかとは思いますがSub/function内に宛ててgosubを使うことは先ず無いと思うので、Sub/Function内においてreturn文を「gosubの折り返し地点」ではなくC等のように「返り値の設定及び抜ける位置」という解釈には出来ないものでしょうか。>>山本さん
た、たしかに(汗関数内でGoSubを使うなどという荒業はあまりないですよね。Gotoは絶対に必要ですけど…。 ということは、関数内に限り、Returnステートメントを違う意味で持たせる、逆の視点から言うと、グローバル領域に限り、GoSubステートメントとReturnステートメントを組み合わせるという仕組みにはできそうですね。 Ver5.0ではReturnを廃止し、新しい意味を持たせたいとも思っていたので、このまとめ方で良さそうかも!?候補として検討してみます。 |
作成者: | konisi [ 2006年2月19日(日) 23:45 ] |
記事の件名: | |
わーいwww まぁそれだけ書きたくて無駄にレスしてみましたすみません。 |
ページ 1 / 1 | 全ての表示時間は UTC+09:00 です |
Powered by phpBB® Forum Software © phpBB Limited https://www.phpbb.com/ |