[ruby-list:40610] メソッドの引数をチェックする方法について

From: うめ とし <ruby_plus_ruby@...>
Date: 2005-02-09 18:32:37 UTC
List: ruby-list #40610
はじめましてT.Umeharaといいます。

学校でJavaを半年ほど習ったことがあるだけの
独学&日曜プログラマです。

Javaをやっていたせいもあり、
メソッドの型チェックをしたいと思うことがしばしばありまし
た。
そこで、次のようなものを考えました。

check( a => String , b => String){
 a = "new\n"
 b = a.chomp!
}
check( a => String , b => String){
 a = "new"
 b = 12 # => Error
}
check( a => String , b=> String){
 a = "new"
 b = a.size #=> Error
}

こんなのどうでしょう??
特徴は、代入という動作をすることで、型チェックができるの
と、
型チェックを、関数の外でやってしまおうということです。
check(){}で囲めば、今までのコードにも簡単に制約つけられ
ますし。

あと、CGIとか書くとき用に、
check_by( a.size < 12 , b.size < 12 ){
a = "あいうえお"
b = "あいうえおかきくけこ" # => Error
} 
こんなのも考えてみました。

もちろん、型チェックがRuby的じゃないのは知ってる(という
か掲示板でも突っ込まれました)ので、
check_by( a.method?(String) ){}
という書き方もいいと思います。

#####
ここからは余談になるのですが、
僕がもともと、一番やりたかったのは、
関数の中で、引数のチェックをするんじゃなくて、
できるだけ、関数には基本的なことだけ書いて、
引数チェックは使う時に明示的に、行うって書き方がしたい。
ってことでした。
(ちなみに、もともと、こんな書き方をしていました↓
testmethod_check(a,b)
testmethod(a,b) 
でも、これは、あまりきれいじゃないしやめました。
)

利点は、メソッドの働きが簡潔に説明でき、再利用しやすいっ
てことの方が、チェックできるからどうのという利点より大き
いと思います。

どうでしょうか?
あと、うまく実装できないので、便利だと思った方、実装して
ください。

#####
あと、失礼は承知なのですが、ほんとに日曜プログラマなので
、
質問もらっても、返信できないかもです。(ということで、質
問しないでください。)
ちょっと、情報とは関係ない学部で、
しかも、留年の危機という状況なので。。
あしたから、試験が立て込んでいます(^^;)


__________________________________
Let's Celebrate Together!
Yahoo! JAPAN
http://pr.mail.yahoo.co.jp/so2005/


In This Thread

Prev Next