[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 05/09 21:11 / Filesize : 227 KB / Number-of Response : 919
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Rubyについて Part 36



1 名前:デフォルトの名無しさん [2009/06/28(日) 16:29:28 ]
オブジェクト指向スクリプト言語Rubyについて扱うスレッドです。
前スレに変なのが沸いて流れてしまいましたが、まったりと行きましょう。

Ruby Home Page
www.ruby-lang.org/ja/

= 前スレ
Rubyについて Part 35
pc12.2ch.net/test/read.cgi/tech/1238194350/

過去スレ・関連スレは >>2-

116 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 02:00:56 ]
C(++)系のプログラマに pack/unpack を直感的に理解してもらう
うまい説明の仕方ってあるだろうか?


117 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 02:17:19 ]
>116
ソースコードを読ませる。

118 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 02:35:41 ]
>>116
Cで構造体なんかをfread/writeするコードと
Rubyでpack/unpackするコードを並べて見せればいいじゃまいか

119 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 04:04:30 ]
char* <=> struct* のキャストにbase64等の便利機能を加えた物、とか

120 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 08:49:39 ]
それCで書けるなら、Cのほうがいいって結論に成る。
おまいらだと、rubyで書ける事をわざわざCで書かないだろ。

121 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 08:51:15 ]
むしろC/C++プログラマの方が理解しやすいだろ
ネイティブのintとかエンディアンがどうこうとか日常だし

122 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 09:51:45 ]
この論点のずれ具合が巨大掲示板の醍醐味。

123 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 10:42:33 ]
pack/unpackなんて実質的にCプログラマのための機能だろう。
直感的にもなにも、C構造体そのものやん。

124 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 12:23:48 ]
すいません。どなたか、初心者スレたててください(´・ω・`)
おながいします



125 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 12:32:03 ]
>>123
あれはRubyらしく操作するということをハナから放棄したシロモノだよね

新しく再構成したRuby専用インタフェースを覚えなおすのとかめんどくさいから流用というのもあるんだろうけど

126 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 12:41:00 ]
初心者スレって意味あるのか?

127 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 12:44:48 ]
そりゃ初心者は一定数いるだろうし、
初心者が卒業する一方で新しい初心者も出てくるだろうし
大抵の言語スレで初心者スレがあるのを見ても、あったほうがいいんでない

128 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 12:54:14 ]
スレ立てトライしてみる

129 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 12:58:46 ]
Ruby 初心者スレッド Part 29
pc12.2ch.net/test/read.cgi/tech/1246593305/

130 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 13:01:50 ]


131 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 14:28:28 ]
>>113
EUC-JPもShift_JISもJISベースですがなにか


132 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 15:08:43 ]
だから何なのかサッパリわからんレスの最後に、なにか、とか書かれてもな。

133 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 12:13:23 ]
Shift_JIS と名乗って CP932 の文字使ってる Web ページは爆発しろ
あと ~ と 〜 でどうにかなるページももれなく爆発しろ

134 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 14:33:05 ]
どか〜ん



135 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 14:46:00 ]
ラテン文字入ってるのに us-ascii と名乗ってるページがあるのと同じようなもんかな、と思うことにしてる

136 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 17:59:45 ]
何も言わないと、iso8859が仕様ですがなにか?

137 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 18:10:17 ]
ラテン文字てーと
ABCDEFHIKLMNOPQRSTVWXZ
こうですか。Gもか。



138 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 18:16:28 ]
>>136
US-ASCIIって名乗ってるって言ってるじゃん

139 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 09:34:04 ]
しつもんー
Ruby は外部 iconv のバージョンとか構成とか関知してないよね
WINDOWS-31J が使えない Iconv モジュールとか存在しうるよね
でも SHIFT_JIS は期待していいよね

140 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 09:45:11 ]
ttp://www.gnu.org/software/libiconv/
> Japanese
>   EUC-JP, SHIFT_JIS, CP932, ISO-2022-JP, ISO-2022-JP-2, ISO-2022-JP-1

この6つは存在するものとして扱っていいと思う

これ以外はシステムに存在しなかったときのエラー処理が要るな
エラー処理ったって何すればいいのかさっぱりわからんが(w
自前で変換表持って置換でもすればいいのか?

141 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 20:46:44 ]
ISO-2022-JP系で使ってるようなエンコーディングを
外部とのデータ交換用ではなく内部で使おうとするのは
かなり技術的なセンスが欠落してるよな

まだ昔のX-Multiがやってたような
独自の固定長のコード体系の方がマシというか

142 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 20:48:51 ]
メール前提だと文字化けしない事が重要なので、一切変換せず扱えるのも大きい。
バイト文字列として扱えば良いけどね。

143 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 00:03:58 ]
これからの時代は文字コードはUnicode系しか認めん。
みんながテキストファイルをUTF-8にしておけば文字コード関係のトラブルは格段に減るのに。

144 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 00:19:07 ]
メール程度の日本語を使いたいだけならUTF-8一択で問題が極小になるという
現代の真実が主流になるのは一体いつのことだろう。
Outlookか?Thunderbirdか?鶴亀か?Beckyか?正直何が悪いんだ?



145 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 08:33:31 ]
フォントとグリフと文字集合とエンコーディングを分けて話さないと
CSIの怖い人がきそうだな


146 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 09:09:34 ]
文字集合とエンコーディングとcharsetを区別して
(定義を暗誦するとかではなく)日常的に使える人は日本で一握りだろうな

147 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 10:42:18 ]
言語と用字(スクリプト)の区別とかもだねー。



148 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 23:31:08 ]
オブジェクト指向だと、メソッドの長さは15行程度ってえらそうな人が書いてたですが
そんなものなの?…

149 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 23:41:37 ]
>>148
そうとは限らないが、たいてい短い方が好ましいのは確か

とはいえ、重要なのは「処理内容がきちんとメソッドに分割されているかどうか」だから
長さそのものが問題になるわけではない

150 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 00:10:03 ]
なるほど…しっかり分割していけば、だいたいその程度に収まる事が多い
という感じか・・・

151 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 00:18:58 ]
javaはクラスやメソッドが長いって馬鹿にするやつが多いけど
あれはeclipseで補完するもんなのにわかってないおん

152 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 00:32:54 ]
補完機能つきの重量級IDEを使わないと仕事にならないということですね、分かります

153 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 00:42:23 ]
しかしIDEでの補完を使えば、LL言語よりも生産性は上がる。
なにしろ、変数の型付けが厳格で、定義していない変数は使えないから、
単純なミスタイプなら、遅くともコンパイルする段階で防げる。
これはちょっとしたことのようでかなり大きい。

154 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 00:55:12 ]
>LL言語よりも生産性は上がる
問題の種類による。ウォーターフォールで仕様策をガッチリきめて
作り始めるならともかく、形を考えながらプロトタイプを
チャッチャと作ってすぐ練り直す問題(今はほとんどがこれ)だと
LL言語のほうがメリットが大きい。

鶏を裁くのに牛刀を使う必要はないってこと。




155 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 01:01:34 ]
LL言語て

156 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 01:04:36 ]
牛刀で鶏なんて表現知らなかった・・・
あまりに上手いこと言えてて誰かの名言か何かと思えば故事だったのか

157 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 01:11:20 ]
漏れが知ってるぐらいだから結構知られてる表現じゃないか

>>155
AST木ってのを見たことがある

158 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 01:47:56 ]
RAS症候群はわかりやすい意思疎通を行おうとする正常な人間の証だろ

そういうことを言い出すと、
DVDディスクとか、IT技術とか、LCDディスプレイとかBB弾とか
HIVウィルスとかBS放送とかもダメになる。そんな馬鹿なことはあるまい。


159 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 02:06:11 ]
>>158
ほう、現在のDVDが何の略かご存知とお見受けする
ぜひ御教えを請いたいものだ

160 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 02:27:42 ]
今のDVDはDVDの3文字を擁する規格だからな
まーどうでもいいっちゃどうでもいいが
あと「LL言語」は日本語としては普通
LLとだけ書かれてもよーわからんし、読むときもLの部分だけ訳して考えてなどおるまいて

プログラムとしてではなくプログラミング最中の静的言語のメリットは完全な補完ができることだろ
Rubyの補完なんて文脈なしで文字列としてしかできんからへぼいことこのうえない
まあそれでもけっこうなんとかなるこたなるんだが、Javaのようなものとは比べるべくもない

161 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 03:18:01 ]
「軽量言語」でええじゃろ

162 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 06:52:36 ]
普通にLLつってるな。
文脈でわかるもんだし。

163 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 07:14:23 ]
LLと呼び習わされる言語群、という程度の意味合いしか持たせてないからLL言語と言ってる
そんな引っかかるほど頻繁に使う言葉じゃないし

セミナとかで使いまくってるような人はまた違う感覚があるのだろう

164 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 11:05:35 ]
>>151
名前の長さの話なんか誰もしてないぞ。



165 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 11:14:11 ]
>>151ではないが名前の長さのことなんて言ってないと思うぞ

RubyでもIDEを使えばけっこう構文エラーチェックがされて楽だけどな

166 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 11:26:13 ]
Java の Eclipse に負けている Ruby の emacs/vi の機能ってなに?

167 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 11:39:09 ]
>>166
はやーい

168 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 11:57:41 ]
eclipse のほうが遅い

169 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 12:05:47 ]
Emacs や vim のほうがエディタとしての体をなしている、というあたりだな

べつに、Eclipce で完結してるならそれはそれでいいじゃんね
Emacs や vim を試して「○○機能がないからこれではプログラミングできない」と考えたなら使わなきゃいいんだしさ

170 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 12:37:02 ]
irbでのタブによるオートコンプリートやvimのオムニ補完が存在することから考えれば、
rubyをはじめとしたスクリプト系言語でもabbrev以上のレベルの補完機能は
普通に需要があると思うけどね

動的言語ゆえの実装の難しさから実装例が少ないだけの話を
「LLに補完は不要」といわんばかりの主張にすりかえちゃうのは
いわゆる酸っぱいブドウでしかないよねえ

171 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 12:46:58 ]
irbのは実行中のインスタンスバイナリが手元に存在してるからできる芸当だろ

あるクラスに対して略語展開以上の妥当なメソッド名や変数名候補を提供するには
「クラスの実際のパースとモジュール参照の解決だけを行うがインスタンス生成はしない」
ということをする必要があるが、それはつまり普通にスクリプトの実行だよな

172 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 12:56:21 ]
もっと言っちゃうと、
「区別のために関数名を長くして、
 使用時の利便性は環境による補完などのアシストで補う」
っていうアプローチって、静的言語によく使われている手法ではあるけど、
そもそもの元祖ってLISPのREPLだからむしろ動的言語側から
発生したアイデアなんだよねw

関数名を長くするか小さくするかなんて言語を利用する際の
考え方の違いでしかなくて、
動的か静的かなんて観点とは直交なんだけど、
歴史を知らない人って目先の相違点で近視眼的に敵味方を分けちゃうんだよねー。

173 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 12:58:41 ]
えー、

class C
eval("def hoge; end")
end

C.new.

この時点で hoge が候補に出てきて欲しいということ?

174 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 13:05:06 ]
>>173
それが出ないのはさすがに諦めていいんじゃないかと思う。



175 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 13:10:09 ]
じゃあ何が自動で出て欲しいのよ
require した完成済みのクラスやモジュールのメソッド?
作ってる最中のコンパイルエラーのクラスのメソッド?
今まさに書いてる引数に指定してもエラーを起こさない妥当なクラスが入ってる変数名?

176 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 13:10:54 ]
実際Netbeansは内蔵のjrubyで解析かけてるし、vimもrubyと連携してオムニ補完してるんだけどね。

実用上役に立つレベルにもっていくにあたって
エディタのコードハイライトみたいなお手軽な実装量で済まないのは確かだけど、
やれば出来るし、動く現物が今存在するわけだしねえ。

そもそも補完に完璧を目指す必要なんかなくて、
使用する際の8割でアシストが出来るなら5倍の効率化だし、
9割効くなら10倍の効率化になるわけだし。



177 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 13:17:59 ]
> require した完成済みのクラスやモジュールのメソッド?
これは ri あたりから引いてくるのが既にあるな
fastri が動作しなくなって久しいが

> 作ってる最中のコンパイルエラーのクラスのメソッド?
変な書き方してると補完試すたびにスクリプト片が中途半端に動作して
テストサーバに接続とかそういうことが起きそうで怖い
というか現在のバッファに書いてあるなら動的略語展開でなんとかならんか

> 今まさに書いてる引数に指定してもエラーを起こさない妥当なクラスが入ってる変数名?
これは無理だろ、型の情報がない

178 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 13:25:21 ]
>>177が最近の技術に疎いだけというオチがつく悪寒
vimの奴のソースでも見てみたらいいんじゃね?

179 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 13:29:02 ]
そのへんで楽したいなら無理せずにJavaやれよJava
静的言語は素晴らしいって実感するぞ

180 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 13:31:00 ]
Java をずっとやってきて、動的言語の素晴らしさを実感しているけど?
用途によるね。

181 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 13:35:09 ]
Rubyでメソッド引数の型をアノテーションか何かで註記する標準的な方法って
無いの?
いくら動的型だからって、或る程度想定してるクラスの範囲ってあるでしょ?

182 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 13:37:45 ]
>>181
マジでなんもないよ
必要なメソッドさえ動作すれば何でもいいから

マニュアル的に注釈をする方法は、マニュアルシステムによっては存在するけど、案の定全く流行ってない

183 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 13:41:53 ]
よくわからんけど、
Eclipse(Aptana Rad Rails)より Netbeans Ruby のほうが、
補完の候補が出てくるのが速い気がする。

184 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 13:43:59 ]
まあメソッド定義から与えられた引数がどう使われるか(どんなメッセージがsendされるか)
追跡して、引き数に指定できる変数を絞り込むぐらいなら出来る。

method_missing使ってどうこうしてるようなケースじゃ厳しいが。
まあ完璧である必要もないしな。



185 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 13:53:54 ]
>182
えーと、逆に言えば、メジャーなマニュアルシステムを選べば、
標準的とまでは言わないまでも、まぁまぁ一般的な型の註記法があるって感じ?
例えば?

186 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 13:55:27 ]
>>182
yard流行ってないよね
ttp://yard.soen.ca/getting_started
最初はきちんとクラスを書いていたものの「Rubyだとホントはどんなクラスでもいいんじゃね??」とか
気づいてしまった人が多いのではないかと推測

# 挨拶する
#
# @param [String] name 挨拶する対象
def hello(name)
 puts "hello, #{name}"
end

# 家にいるかどうかをチェック
#
# @return [true, false] 家にいるかどうかの真偽値
def at_home?
 # check
end

187 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 14:04:09 ]
>>186
yardoc の引数のはたくさん書かなきゃいけなくなるからめんどくさくなるんだよ
each で回せればなんでもいい場合は [#each] とも書けるが、必要なメソッドったって結構あるしなー

188 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 14:08:32 ]
マニュアル書くのめんどいメソッドは駄目メソッドという教育効果が

189 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 14:13:24 ]
>186
それはわざわざ書き方がめんどくさいのを選んでるせいかも?

ScalaかHaskell的なシグネチャが有れば十分じゃない?
その例で言えば、こんな感じ
hello : String => nil # Scala的書法
hello : {def to_s: String} => nil  # ScalaのStructual Typing的書法
hello :: String -> nil # Haskell的書法

190 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 16:01:31 ]
is_a? ではなく respond_to? で制限をかけることを思いついた
が、使うメソッド全列挙がめんどいのでやっぱり駄目だな

191 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 16:20:01 ]
respondで縛ると結局JavaのXXXableインターフェースみたいになっちゃうからね

指定が煩雑な割に完全に型が決定できるわけでもないから
JavaのうれしくないところとRubyのうれしくないところが悪魔合体したような有様に

192 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 16:30:29 ]
phpunit なら PHPDoc をある程度自動生成するのにね
yardoc を生成するのを作ったら

193 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 16:51:54 ]
いや、その、なんていうかだな、yard の @params のクラス名称の8割くらいの用途は、
実は引数の名称で用が済むんだよ

引数の名称に data とか e とか使いまくってるならまだしも、
普通は相当の意味のある引数名になってるだろ

 def hoge(str, params)

って書いてあったら、str はよっぽどでなけりゃ String だし、
params は意表をつく攻撃をする意図がなければたいてい Hash だろ
それ以上の情報は @params のクラス名称でもわからんわけだしな

194 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 17:02:31 ]
それゆえに真面目にyardを書いても大してうれしくないという話になり、
今のまんまでいいじゃん、でここまで来たのが現状だからなあ



195 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 17:12:54 ]
変数名に「str」ってハンガリアン記法の問題そのままだなw

196 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 17:18:59 ]
yardoc の一番よくないところは、必死でクラスを書いても現時点で特にメリットがないということ
このクラスを利用して補完がうまく動くぜーということも特になく、マニュアルの行が1個増えるだけ

マニュアルを読むときの話なのなら説明文やそれこそ引数名を直接読んでもらえれば
クラス名なんて不完全な情報だけどころか意図まで全部わかるわけだ

197 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 17:23:55 ]
>>195
title_string_or_empry_when_tag_contains_nothing_or_nil_when_tag_itself_doesnt_exist_called_by_HTMLParser_ParsedData_title とか
そういう一発で内容がわかるほうがいっすか

198 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 17:30:40 ]
>>196
まあrdocの代表的な実装が、メソッド名クリックとかで
該当部分のソースを見れるようになってるのが
その辺の現実を如実に示してるよね。

>>197
責務を分割しろとかパッケージ化して共通の修飾部を外せとか言われるんじゃね
つうかstrが文字列だとわかると嬉しいのかどうかってのがよしあしの分岐点だよな

199 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 17:39:45 ]
// i に 100 を代入する
i = 100;

のような「見ればわかることまでいちいち書かんでええ」系のツッコミの適用範囲が
Ruby ではえらい広いから
どこまでコメント書くべきなのか書かなくてもいいもんかちょっと迷う

200 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 18:02:25 ]
>>197
意味分からない。

ハンガリアン記法と同じ問題を抱えてると具体的に書いたのだが、
なんでそんなに見当違いのレスがくるんだ?

201 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 18:13:01 ]
CやJavaのような強く型付けされた言語と違って、引数の型情報のないLLでは
引数の名前に型名情報を加えたほうが使いやすい場合も多いだろう。
Smalltalkだと、aString, anEvent, aRectangle, xNumber, yNumberみたいに書いたもんだ。
この場合は、変数の役割よりも型名のほうが偉い。

202 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 18:58:07 ]
引数にstrをとるメソッドが文字列処理のヘルパークラスみたいに
strの内容が文字列でさえあれば問題なくなにがしか処理できるのなら
引数名はstrで必要にして充分だよな。

逆に引数の内容が何らかの意味のある文字列であって、
想定外の内容だったときにはエラーを返さなきゃいけないような処理なんであれば、
その「想定している何か」の情報を引数名に込めてやりたいところ。

203 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 18:59:23 ]
まああと Smalltalk の場合はクラス名の部分を選択してクラスの説明読んだり
クラスブラウザ立ち上げてブラウズしたりって意味もあるけどねって話はいいとして、
名前をつけるので迷いがちなら、ケント・ベック読んでおけばとりあえず指針は得られる。

www.amazon.co.jp/dp/4894717549

204 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 19:10:01 ]
ケントベック本というと、読んだ後に引数名を
aTarget
とかにしまくってしまうような偏見がある




205 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 21:12:14 ]
Smalltalk の場合は、引数の名前の他にキーワードセレクタも引数の使い方を表す情報として使用できる。
この使い方は、Rubyのメソッドが引数をハッシュでとる場合に近い。
ハッシュのキーに意味を持たせれば、値の名前は要らない。

206 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 01:10:26 ]
「その、まあ」なやつは前RAIDスレにいなかったか?今もいるかもしれんが

207 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 08:48:47 ]
ttp://github.com/tenderlove/mechanize/commit/fa8d725fabcabd2c1dbaf9e9c9700890fafba81f
うへえ、90KBのソースファイル全部から一番外側のモジュール定義を物理的に引っこ抜いて、
一番最後に空のモジュール作って再代入しよった
っていうかこんなんgithubでやるな、追随や衝突解決がめんどくさいから
どうせ「スペースがもったいない」「インデントが深いから」とかいうアホな理由だろこれ

module WWW
 class Mechanize
  def …
  class Page
   def …
  end
 end
end

       ↓

class Mechanize
 def …
 class Page
  def …
 end
end
module WWW; end
WWW::Mechanize = ::Mechanize

208 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 09:00:33 ]
「いっちゃん外側の纏め用モジュールの扱い」ってのは難儀なとこではある
ここにはメソッドも定数も定義されず、クラスをまとめるモジュール空間の提供としてのみ存在するもの

インデント深くなるから外に出しちゃえってのはそれはそれでいいんじゃないの
WWW::Mechanize と Mechanize の2つが存在することになるから WWW モジュール作った意味なさそうだけどさ

てんだらーが nokogiri 疲れでトチ狂ったのかと思ったら別の人の直接コミットなのね

209 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 09:11:47 ]
この場合は ::Mechanize でアクセスできなくすればいいんだろ
…方法思いつかんが
なんかある?

210 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 10:19:37 ]
これずううううううっと思ってたんだけどさ、オフィシャルページの HTML のタイトルさ、
「ダウンロード」とか「ニュース」とか単語になってるのなんとかなんね?
「Ruby ダウンロード」とか「ニュース - オブジェクト指向スクリプト言語Ruby」とか
他のサイトと区別できるタイトルつけようぜ

211 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 10:22:55 ]
Object.send(:remove_const, 'Mechanize') とか


212 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 10:51:30 ]
それは WWW::Mechanize ごとアクセスできなくなるんでは…

class Mechanize; end
module WWW; end
WWW::Mechanize = ::Mechanize
Object.__send__(:remove_const, 'Mechanize')
p Mechanize.new rescue "Mechanize.new.failed"
p WWW::Mechanize.new rescue "WWW::Mechanize.new.failed"

"Mechanize.new.failed"
#<Mechanize:0xb7cfaec4>

んぬう

213 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 11:08:50 ]
クラス名は単なる定数で、参照先がたまたまクラスオブジェクトだってことさ。


214 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 11:14:11 ]
>>210
チラシの裏に提案を書いてもどうにもならないことは自覚してる?



215 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 11:14:32 ]
class Hoge
end

と書いたとして、これがいつ class クラスのオブジェクトとして存在し始めるかというのは意識しにくいかもね

216 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 11:25:48 ]
__send__でprivate呼べなくなったんじゃなかったっけ

>>215
class 〜 endがself返せばirbとかでわかりやすいんだろうけど

ってこれも他のブロックのように最後の返値を返すのか
class Foo; end #=> nil
class Bar; self; end #=> Bar







[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<227KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef