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