ユビキタス世界までの道の駅

アウトドア派のプログラミング奮闘記

ホーム 連絡をする 同期する ( RSS 2.0 ) Login
投稿数  130  : 記事  0  : コメント  1519  : トラックバック  8

記事カテゴリ

書庫

日記カテゴリ

ギャラリ

姉妹ブログ

構造体やクラス内にやらせたい動きをメソッドとして書いて

複数に伴う同じ処理を定義できます。

 

定義(メソッドの種類)には2つありまして、

「Sub」 と 「Function」 の宣言があります。

 

Subの書き方は

  Sub [メソッド名] ([パラメータ],・・・)

  「なんらかの処理」

  End Sub

 

Functionの書き方は

  Function [メソッド名] ([パラメータ],・・・) As [データ型]

  「なんらかの処理」

  End Function

となります。

 

パラメータは、そのメソッドが動くときに使う引数で

料理で言う「材料」です。

 

Sub と Funtion の違いは戻り値があるないでしょうか

Functionのあとには「As データ型」がくっついています。

 

たとえば:0を除いた自然数か判断するの関数メソッド

Function NaturalNumber ( ByVal a as Integer ) As Boolean

  If a > 0 then

    Return True

  Else

    Return False

  End If

End Function

とすると

材料のIntegerが自然数であれればReturn キーワードを使いTrueを返し

そうでなければFalseを返します。

 

Subの中でもReturnキーワードが使えますが、

Return [値]という風に

返す値が指定できないし、あまり一般的ではありません。

 

また、パラメータ内でよく見るByValとByRefのキーワードは、

値渡しと参照渡しということを宣言するもので

By Value と By Reference なんでしょうか?(勝手に想像していますが、ひとりごとってことで)

 

パラメーターの値がメソッドの中でどの様に扱われるのかという宣言になります。

ちなみに何もしないとVisualStudioでは、ByValと見なされ、勝手に表示されてしまいます。

 

Structure と Class の時と同じ動きをするのですが、

ByRefで引っ張ってくると、

その変数に他の値を代入してしまったら、

そのメソッドが終了して帰ったときは参照型の特性で、元の変数にも代入されて、値が変わってしまいます。
(値型と参照型を参照してください。)


料理するときに完成をイメージして始めるように、

引数に大して、値として利用するのか、参照することのメリットを利用するのかを考えて、書いていきたいものです。

投稿日時 : 2007年8月3日 9:50

コメント

# re: 超初心者からの脱却(メソッド、値渡し・参照渡し) 2007/08/03 9:57 NAL-6295
>ByRefで引っ張ってくると、

>その変数に他の値を代入してしまったら、

>そのメソッドが終了して帰ったときは参照型の特性で、元の変数にも代入さ>れて、値が変わってしまいます。
>(値型と参照型を参照してください。)

このあたり、「値型、参照型」と「値渡し、参照渡し」は分けて考えた方が誤解がなさそうです。
参照型を値渡ししても、当然中身を触ったら元の変数にも影響を与えるわけですし。


# re: 超初心者からの脱却(メソッド、値渡し・参照渡し) 2007/08/03 9:58 επιστημη
せんせぇVBおんちεπιのしつもん。

> Subの中でもReturnキーワードが使えますが、
> Return [値]という風に
> 返す値が指定できないし、あまり一般的ではありません。

そいじゃどーやって途中脱出するんでしょか。
SubだろがFunctionだろがReturnで抜けるんが統一感があるんですケド。




# re: 超初心者からの脱却(メソッド、値渡し・参照渡し) 2007/08/03 10:26 まさる
>どーやって途中脱出するんでしょか。
Exit Subでしょうね、きっと。

でも私はC畑から生まれたコなので、Exit Subは気持ち悪いっす。
なので当然のごとくReturn使ってますねぇ。

# re: 超初心者からの脱却(メソッド、値渡し・参照渡し) 2007/08/03 10:36 Zee
>>どーやって途中脱出するんでしょか。
>Exit Subでしょうね、きっと。
Exit Subを使ってました。
Cを知らないので、全然違和感とか無かったわけですが^^;


# re: 超初心者からの脱却(メソッド、値渡し・参照渡し) 2007/08/03 10:38 HiJun
C/C++、Java、C#、VB.NET等 統一できるので
私もReturnのほうが好きです。

でもね現状VB5.0を触っている私は...orz

# re: 超初心者からの脱却(メソッド、値渡し・参照渡し) 2007/08/03 10:43 Zee
Returnで脱出なほうが一般的だったんですか^^;
知らなかったですね^^;
独学なもんで、人が書いたことモノをあまり見ないから
そこんとこわかんないんですよね^^;

Returnで返すように変えようかな^^
(好みだけの問題なら)

# re: 超初心者からの脱却(メソッド、値渡し・参照渡し) 2007/08/03 11:04 とっちゃん
ByVal/ByRef (値渡し/参照渡し)は、何を渡すかではなく、どう渡すかです。
ByRef で渡すと、元のオブジェクトへの参照。
ByVal は元のオブジェクトのコピー(変数の器そのものをコピー)となります。
#うーん...この辺、8/18 でもさらっと流そうか?w<おい!


Sub でも Return 使ってるという人は増えてるかもしれない。
C系では Sub にあたるのは void Func() だし。

好みの問題だとは思うけど(ILになった時点で同じだと思うし)。

# re: 超初心者からの脱却(メソッド、値渡し・参照渡し) 2007/08/03 11:22 Zee
>#うーん...この辺、8/18 でもさらっと流そうか?w<おい!
是非期待したいと思います^^(時間的・気分的に余裕あり?)

# re: 超初心者からの脱却(メソッド、値渡し・参照渡し) 2007/08/03 11:27 επιστημη
どもです。

統一感てことなら、Exit Sub / Exit Function てチョイスもありなのかしら。

# よーわからんと書いてますが Exit Function ちゅーのもあんでしょ?
# そんとき戻り値はどないして返すんっですの?
# PASCALからの類推では関数名と同じ仮想的な変数がコソーリ作られてて、
# そいつに代入すれば戻り値、と予測するなり。


# re: 超初心者からの脱却(メソッド、値渡し・参照渡し) 2007/08/03 11:38 Chuki
サブルーチンといえば、
GOSUB
RETURN

で育った世代なので、VBのExit Sub見たときは気持ち悪かった^^;
ちなみに、F-BASICっす。タモリが宣伝してたやつ^^;
そっからQuick Cにはまって、きがつくとQC⇒QAやってますorz
#言語じゃないジャン^^;

>ByRef で渡すと、元のオブジェクトへの参照。
いまだに「参照」という日本語が分らんです。
参照するだけなのに、なんで元のオブジェクトが操作できるのか、いまだに納得できません。
#referはなんとなく re-ferreなので納得できるんですが。

----
*さんしょう【参照】
さんしょう(サンセウ)【参照】
―する
より△詳しい(確実な)情報を得るために、他の資料と比べ合わせること。
用例・作例
―符

Shin Meikai Kokugo Dictionary, 5th edition (C) Sanseido Co., Ltd. 1972,1974,1981,1989,1997

# re: 超初心者からの脱却(メソッド、値渡し・参照渡し) 2007/08/03 11:52 Chuki
↑ おまけ

DBで言うところの参照制約なら、マスタ以外で触るなボケ、という意思表示なので、「参照」という言葉がとても納得できます。
#こんなしょうもないことで躓く初心者って私だけなんだろうかなorz

# re: 超初心者からの脱却(メソッド、値渡し・参照渡し) 2007/08/03 12:58 Zee
>参照するだけなのに、なんで元のオブジェクトが操作できるのか、いまだに納得できません。

参照って言葉で説明するときに、個々の「参照」に対するイメージ理解が様々なんでしょうね。
扱う言語とかなんとか。
自分の中では、このとき使う「参照」という言葉自体に固有な言葉として理解はしてます。(分けて理解しているってこと)
リンクってのも変ですし、共通認識するのは難しいでしょうね。(だから誤解を生むのですが)

# re: 超初心者からの脱却(メソッド、値渡し・参照渡し) 2007/08/03 13:00 Zee
>Exit Function ちゅーのもあんでしょ?
すいません、使ったこと有りませんでしたw

# re: 超初心者からの脱却(メソッド、値渡し・参照渡し) 2007/08/03 13:37 YuO
># そんとき戻り値はどないして返すんっですの?
επιστημηさんの予想が当たりです。
QB時代からの由緒正しき(?)方法です。
# でも私はReturn派。

# re: 超初心者からの脱却(メソッド、値渡し・参照渡し) 2007/08/03 13:41 凪瀬
参照は矢印のイメージで比喩して図にすると分かりやすいと考えています。
週末にエントリ書こうかな。

# re: 超初心者からの脱却(メソッド、値渡し・参照渡し) 2007/08/03 14:16 Chuki
>Exit Function ちゅーのもあんでしょ?

Public Function hogehoge as Integer
If bErr Then hogehoge = -1:Exit Function
hogehoge = 0
End Function

関数名に値を代入する大胆さがVBの持ち味です^^;

ちなみに、返り値が無いと、エラーの返り血を浴びます。


# re: 超初心者からの脱却(メソッド、値渡し・参照渡し) 2007/08/03 14:39 Chuki
連投すいません。

VBにおいてもReturn派が多いようですが、今のところ標準化するときは、従来どおりに関数名へ代入すること、としています。
大カスが出たくらいでは、いい加減決別してReturnに縛ろうかなぁ。

>リンクってのも変ですし、共通認識するのは難しいでしょうね。(だから誤解を生むのですが)
そのまま、バイレフ(call by reference)とかバイバル(call by Value)じゃダメなのかなぁ。値渡しは許せても参照渡しという言葉は絶対誤解の元。でもいい言葉も浮かばないんですよねぇ。
I like it.のitは何を指すのか、の指すはreferですもんね。この場合、I destoyed it.とすれば、明確にrefer先をぶっ壊していることが分ります。
#日本語にできないものはあきらめるのが一番^^;


# re: 超初心者からの脱却(メソッド、値渡し・参照渡し) 2007/08/03 17:23 Mr.T
Mr.Tです、こんにちは。

>>Exit Function ちゅーのもあんでしょ?
>すいません、使ったこと有りませんでしたw

結構使ってましたw
正常、異常だけの判定値を返す場合、
Function IsWankuma() as Boolean
IsWankuma = false
if **** then
exit function
end if

IsWankuma = True
end Function
なんて形でよく利用してたかな?
.NETになってから、Return使いまくりですが。

>そのまま、バイレフ(call by reference)とかバイバル(call by Value)じゃダメなのかなぁ。

問題ないでと思いますよ。

# re: 超初心者からの脱却(メソッド、値渡し・参照渡し) 2007/08/03 20:09 とっちゃん
>>#うーん...この辺、8/18 でもさらっと流そうか?w<おい!
>是非期待したいと思います^^(時間的・気分的に余裕あり?)

おす。ページの一つに仕込んで起きましたw


# re: 超初心者からの脱却(メソッド、値渡し・参照渡し) 2007/08/04 0:02 Zee
>>Exit Function ちゅーのもあんでしょ?
>すいません、使ったこと有りませんでしたw

すいません、勘違いです。めちゃくちゃ使ってます。^^;

# re: 超初心者からの脱却(メソッド、値渡し・参照渡し) 2007/08/04 8:50 Zee
>おす。ページの一つに仕込んで起きましたw
楽しみにしてます^^

# words to use when writing an essay j94hbw 2022/09/08 16:32 Charlosmox

Many thanks! Loads of facts.
https://definitionessays.com/ rutgers essay help

# write essay for you r20riq 2022/09/08 21:12 AaronBlact
You revealed this fantastically! https://definitionessays.com/ how to write a self evaluation essay

# pay essay q35cnf 2023/02/26 13:42 CharlesSnoff

Amazing info. Appreciate it!
order an essay cheap https://quality-essays.com/ college essay buy

# buy research proposal f82noh 2023/02/27 4:16 Robertsaids

Thanks, Awesome information.
uk dissertation writing help https://dissertationwritingtops.com/ best dissertation writing

# a good thesis statement t876pd 2023/03/03 2:21 Josephbried
You actually stated it fantastically.
thesis for critical analysis https://writingthesistops.com/ making a thesis statement

# cheap dissertation help y28hog 2023/03/06 7:17 EugeneSib

Nicely put. Cheers.
grad thesis https://helpwithdissertationwriting.com dissertation help free https://topswritingservices.com

# compare and contrast essay writing j30jyb 2023/03/06 22:25 EugeneSib

With thanks, Lots of information!
nursing essay writing services https://hireawriterforanessay.com custom writings review https://hireawriterforanessay.com

# buy essays papers i81ctx 2023/03/07 18:40 Gregorysaipt

Reliable postings. Regards.
help in writing https://essaypromaster.com proposal for dissertation https://writingthesistops.com

# help with writing a thesis statement r427ef 2023/03/09 14:51 Gregorysaipt

With thanks. An abundance of facts!
college application essay prompts https://writinganessaycollegeservice.com pay someone to write your essay https://helpwithdissertationwriting.com

# how can i write a good essay l20fwj 2023/03/10 3:50 EugeneSib

Great facts. Cheers.
cheap custom essay writing services https://hireawriterforanessay.com college essay personal statement https://writeadissertation.com

# someone write my essay g980mm 2023/03/10 12:16 Gregorysaipt

Whoa all kinds of very good advice!
pay someone to write an essay https://helptowriteanessay.com dissertation assistance https://ouressays.com

# the essay e10vka 2023/03/11 10:03 Gregorysaipt

Fantastic info. Appreciate it!
write my summary https://payforanessaysonline.com introduction to college essay https://dissertationwritingtops.com

# hugh gallagher college essay c50vxx 2023/03/12 7:41 Gregorysaipt

Thanks a lot! I like this.
personal statement college essay https://homeworkcourseworkhelps.com how to write a narrative essay about yourself https://custompaperwritersservices.com

# paid to write essays g15avq 2023/03/13 5:24 EugeneSib

You said it adequately..
writing a expository essay https://essaypromaster.com custom report writing service https://custompaperwritersservices.com

# finance dissertations f47ish 2023/04/02 17:49 EugeneSib

Fine facts. Thanks!
writing an autobiography essay https://homeworkcourseworkhelps.com psychology essay writing services https://essaywritingservicelinked.com

# The plugins developed for WordPress 2023/05/10 0:27 Justas
The plugins developed for WordPress serve to enhance the features and functions of a WordPress website, allowing you to build your awesome and functional site https://t.me/wpigaming/648 Customise WordPress with powerful, professional and intuitive fields.

# Clava is the best 2025/05/08 17:58 Danielthash
Fine news for all us

Post Feedback

タイトル
名前
Url:
コメント: