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


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

Rubyについて Part 34



1 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 03:34:28 ]
オブジェクト指向スクリプト言語Rubyについて扱うスレッドです。

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

= 前スレ
Rubyについて Part 33
pc11.2ch.net/test/read.cgi/tech/1223709050/

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

596 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 20:13:34 ]
中途半端なmod_rubyがあったが為に、まともなmod_rubyが開発されなかった。
CGIAlt以前のcgi.rbと同じ構図。

597 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 20:13:59 ]
ぬるぽ

598 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 20:24:38 ]
>>589
NKF.guessでいいじゃん

599 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 20:33:46 ]
質問の前提を覆すなよwかわいそうだろ

600 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 20:58:56 ]
Rubyは遅くてたまらん。
フルアセンブラで書き直して欲しい。
誰かやらないか?

601 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 21:05:48 ]
もっとこう、発展余地のある方向を・・・・
JIT組み込んでみるとかさ、GCのアルゴリズム改良してみるとかさ、
部分的な型付けや型推論に挑むとかさ

602 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 21:07:46 ]
はあ?

603 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 22:20:48 ]
フルアセンブラ(笑)
そんなに遅いならRubyなんかで書かずにフルアセンブリで書けばいいじゃない

604 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 22:45:11 ]
日本で、Ruby はマイナーなテキストエディタのように生き残るよ。
日本語の漢字コードに対応しているし。



605 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 22:54:34 ]
>>604
>マイナーなテキストエディタのように
何となくしっくり来る例えだな

まぁ日本に限らず世界でも、ここまで使われ始めたRubyが
そう簡単に死ぬこともないだろう
仮に知名度が下がったとしても、ハッカーは使い続けていくさ

606 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 23:44:55 ]
>>600
1.9系使ってそう思うのならお前に安住の地はない

607 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 23:53:58 ]
>>596
mod_rubyって中途半端なの?

608 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 01:26:38 ]
一方俺は次のLispに逃げた

609 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 01:33:44 ]
一方おれは1.9に惹かれてRubyを始めた

610 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 01:35:10 ]
そして実践に使える場所がないことに気づく

611 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 02:29:10 ]
昔のRubyはgemだのrubyforgeだのなくて細々とRAAにユーザーのライブラリが
載ってるだけだったから、大抵のユーザーは自給自足してたけど、今は事情が違いすぎる。


612 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 02:43:57 ]
1.9使いたいんだが、使いたいgemのmswin32バイナリが1.9対応してない。

613 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 02:57:46 ]
>607
レン鯖にmod_ruby入れたら何が起こると思う?

614 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 03:03:08 ]
レンタルなんて仮想しか使わんがそれでもダメ?

>>612
何使いたいんだ?



615 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 09:42:48 ]
>>614
nokogiri

616 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 13:13:55 ]
>>615
まじで?ほんのちょっといじってみたが、おれが使う分には動作したのだが。
HTMLとってきてxpathを使ってデータ取り出すだけだけど。nokogiriのどの機能がだめ?

617 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 13:55:00 ]
>>616

実際に使いたいのはmechanizeなんだけど、それがnokogiriを必要としてるんでどうにかならんものかと。
一応状況説明。

ftp://ftp.ruby-lang.org/pub/ruby/binaries/mswin32/ruby-1.9.1-p0-i386-mswin32.zip
といくつかの必要なdllを入れた環境で
gem install mechanize
とすると、
nokogiri-1.2.1-x86-mswin32-60
mechanize-0.9.1
がインストールされる。
で、インストールされたnokogiriのnative.soはmsvcrt-ruby18.dllを要求するけど、
入ってるrubyのdllはmsvcrt-ruby191.dllだからそんなものないということで動かない。
msvcrt-ruby18.dllを持ってきたとしてもまぁ色々拙くて駄目。

618 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 14:52:46 ]
ふむ
再現

619 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 15:16:26 ]
Nokogiri は今重点開発中だから報告すれば('(゚∀゚∩ なおるよ!
どっちかというと Mechanize のラテン文字バグを早めに直して欲しいんだが

require 'rubygems'
require 'mechanize'
agent = WWW::Mechanize.new
agent.get('www.google.com/language_tools?hl=en')

Iconv::IllegalSequence: "\240(Simplified)';n"...
   from /usr/lib/ruby/gems/1.8/gems/mechanize-0.9.1/lib/www/mechanize/util.rb:29:in `iconv'
   from /usr/lib/ruby/gems/1.8/gems/mechanize-0.9.1/lib/www/mechanize/util.rb:29:in `to_native_charset'

ISO-8859-1 なページでラテン文字とか記号つき文字とかがあると絶対にそこでエラーになるという

620 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 15:27:03 ]
>>619
そんなんテストで気づけよ…

621 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 15:31:50 ]
「中でIconv使ってるから文字エンコードごとにメジャーなとこ10個くらい出入力のチェックしよう」
と考えてテスト作る人は正直なとこかなり稀だと思うっていうかめんどくさいというかむしろ
テスト書くのが面倒だというただそれだけの理由でIconv使うの止めそうだ

622 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 15:33:42 ]
>>617-618
まじかよ。1.8と1.9を両方入れてるから間違えたのだろうか。
これから1500万件データを入れなきゃいけないから明日試してみよう。

623 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 15:35:44 ]
俺のは直る直らないと言う以前に1.9.1環境でビルドしたバイナリgemも用意しといてねって話しなんだけどね。
まぁ、それはそれとしてそんなバグもあるのか。

VC++2008 Express Editionでビルドできたら自前でビルドしちゃいたいところだけど、
これもこれで色々とうまくいかないんだよね。

624 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 15:47:16 ]
Mechanize のは
「他人のコードを入れたらそこでだけバグって全体が止まった」
という教科書に典型例として載りそうな事例
メインのメンテナさんは頭抱えてると思う

教訓としては「欧米ファイルを変換する場合は NKF.guess の返り値の文字エンコード名を Iconv に渡さない」
Latin のファイルが NKF.guess で SJIS か CP932 と誤認されて(というか NKF はこの選択肢しかない)、Iconv の変換がコケる



625 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 21:49:42 ]
マジでテキストの文字エンコーディングが
プログラミング上の悩みの種になりつつあるな。
特にスクリプト言語だと、己のスクリプトファイル
自身のエンコーディングと、扱うテキストデータの
エンコーディングの両方ともに注意が必要だ。
正規表現でマッチしなくなるとか、かなり致命的。

626 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 21:55:52 ]
>>625
んなもの、webアプリの世界では遙か昔っからの問題だ
それをUNICODE文字セットで揉めに揉めるだらWindowsのよくわからんローカライズだら
EUC-JPからの切り替え遅延だら、ずーーーっと先延ばししてきただけの話じゃないか
Perlが内部エンコーディングをUTF-8にし、Encodeモジュールを標準添付にしたのは
何年前だと思ってるんだ

627 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 22:12:25 ]
Matzか誰かがUTF-8を毛嫌いしてるだけで
EUC信者のせいで導入できなかったのが敗因
さっさとUTF-8にするのは正解だと思う

628 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 22:31:05 ]
そうだ、ISO-2022-JPもShift_JISもEUCも滅べばいい。
世界の文字コードがUTF-8になれば世界は平和になる

629 名前:デフォルトの名無しさん [2009/03/01(日) 23:09:09 ]
そう。過去資産の一部をすっぱり諦めるという英断を、開発者、ユーザを含めた全員でできれば
幸せな世界が待ってるんだ・・・・・。

630 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 23:38:51 ]
2byteで済むのが3byte-6byteになるのが嫌で反対してるんですね
わかります

631 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 23:45:29 ]
リソースフォークに文字エンコードを書く風習が広まっていれば…

632 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 23:58:21 ]
よし、じゃあ2chをUTF-8化しよう

633 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 00:07:45 ]
なってなかったっけ

634 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 00:11:15 ]
2ch書き込みはcp932



635 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 00:14:23 ]
Unicode文字が使える設定の板があるってだけだな

636 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 01:27:57 ]
Unicodeにもいろいろ違いがあるようだが、あまりよくわかってないダメなおれ
16だのなかったか?

637 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 11:01:03 ]
Code Set Independent は正義

638 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 11:31:18 ]
> Matzか誰かがUTF-8を毛嫌いしてるだけで
> EUC信者のせいで導入できなかったのが敗因
> さっさとUTF-8にするのは正解だと思う
何を言っているんだお前は、RubyにUTF-8対応パッチが入ったのは1999年のことだぞ。

> そうだ、ISO-2022-JPもShift_JISもEUCも滅べばいい。
> 世界の文字コードがUTF-8になれば世界は平和になる
無知な人は幸せでいいですね。

> 2byteで済むのが3byte-6byteになるのが嫌で反対してるんですね
> わかります
全くわかっていないので、とりあえずRFC3629くらいは読んでください。

> リソースフォークに文字エンコードを書く風習が広まっていれば…
なので今更ながらmagic commentなんぞ作ったわけです。

639 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 11:37:22 ]
> Unicodeにもいろいろ違いがあるようだが、あまりよくわかってないダメなおれ
> 16だのなかったか?
Unicodeは1つだからuniなのです。
通信時に用いる符号化にはUTF-8、UTF-16、UTF-32があります。
UTF-16は不幸な過去です・・・。

>>619
glibc iconv や libiconv の未定義文字があると例外投げる独自仕様は、
ほんとに有害ですよね。全てがCitrusになるといいと思います。

>>572
自動推測なんてものを当てにしていいのは小学生までです。
ていうか、ISO 8859シリーズの自動推測って不可能でしょ。
# 単語辞書とかでがんばるのかね?
XML宣言なりHTTPヘッダなりmagic commentなりを探してきてそれを使ってください。
そういうライブラリや、フレームワークはそのうち標準添付されるかもしれません。

640 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 12:11:13 ]
>>636
文字集合としてのUnicodeと、そのエンコーディング(符号化方式)であるUTF、という認識から
始めればいいかと。
俺もその先は詳しく知らんけど。

CSIってのは、単独文字集合内での利用においてはそれなりの合理性があるんだろうが、
現実の開発・動作時に、文字セット間の「変換」「推測」が実質必要になるのが根元的な問題。
それぞれ勝手な文字集合を使う上、さらにそれぞれもろにエンコーディングの問題もある、はず。

物事を単純化したいなら、Unicode一択なんだろうか

641 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 12:37:00 ]
> CSIってのは、単独文字集合内での利用においてはそれなりの合理性があるんだろうが、
> 現実の開発・動作時に、文字セット間の「変換」「推測」が実質必要になるのが根元的な問題。
まず、推測が必要になる時点で何かがおかしい。
そのデータを送ってきたやつはなんでそのデータのエンコーディングを送ってきてないんだ?
送ってきているのだとしたらなんでそれを無視するんだ?
日本語使いだとデータだけから言語がすぐに推測できるのだと思い込んでしまうのかもしれないが、
ヨーロッパの言語だと同じ文字を使っているから、数単語の場合は推測など不可能だぞ。

> それぞれ勝手な文字集合を使う上、さらにそれぞれもろにエンコーディングの問題もある、はず。
内部エンコーディングに処理系が対応しているものを使う限りは、
エンコーディングの問題なんか変換時に用いるエンコーディング名を正しく設定する以上はない。
未だに「表」の2バイト目は0x5Cだからエスケープと衝突して・・・なんてのは古代の遺物です。

Unicode系を内部エンコーディングとして使うとよいのは、
Unicodeが実用上もっとも大きな文字集合でかつ他のほとんどを包含してるから。
例えばJIS X 0208で足りるなら別にEUC-JPでもよい。

642 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 13:24:42 ]
たとえばラウンドトリップ問題とかで、特定の内部コードに一元化という方法では
困る場合がある、というのがCSI派の主張のひとつだが。

643 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 13:47:49 ]
>>642
ラウンドトリップで一緒になってしまうケースでは例えばNEC選定IBM拡張文字とかがあるが、
実際問題として、そんなもん戻らなくてよくね?
比較や検索の問題があるので、その場合元で対処する必要があるにはあるのだが、
これもまた「同じ文字」が別扱いされるバグがあったとも言うわけで。

それ以外は行き帰りで同じ変換表を用いれば問題はないはず。

644 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 13:50:57 ]
>>641
> まず、推測が必要になる時点で何かがおかしい。
んだね。推測はいらない。ただ、文字集合間での変換は必要。
大体変換テーブル自体がUnicode経由だったりするし。

> 例えばJIS X 0208で足りるなら別にEUC-JPでもよい。
そういうことじゃん。JIS X 0208では足りないんだよ。それを代替できるのが、現実的にはUnicodeしかなく、
それなら独自文字集合に基づいたエンコーディングそのものが不要というか、問題の種にしかならない。
Unicodeで足りない、っていう問題は、新たに規格を作ったり拡張したりするのではなく、あくまでもUnicodeの
補完で対応するべき。JIS規格は、日本の文字規格の統一とUnicodeへの提案という意味のみで利用するべき

と思うんだがなあ
まあ文字コードの話はあんまり深入りしたくないってのも本音だな。
レガシーと現状と文化と将来の展望の主張がいり混じってほんとよくわからん。



645 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 14:01:48 ]
> それなら独自文字集合に基づいたエンコーディングそのものが不要というか、問題の種にしかならない。
その「独自」の定義は「Unicodeでない」ですかね。

> Unicodeで足りない、っていう問題は、新たに規格を作ったり拡張したりするのではなく、
> あくまでもUnicodeの補完で対応するべき。
補完って、外字でも使うんですかね。
あと、今はUnicodeの拡張可能な領域って2面しかないんですよね。

> JIS規格は、日本の文字規格の統一とUnicodeへの提案という意味のみで利用するべき
今のJIS規格って、国語審議会のおもちゃでしょ。
文字の追加以外はできないようにして欲しいね。

646 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 21:11:36 ]
よくCSI派から理由に挙げられるのはTRONコードとか文字鏡だっけか?


647 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 22:17:17 ]
いつまでスレ違い続けますか

648 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 23:55:28 ]
UNICODEについて最低限知っておくべきことを最小限の時間で知りたければ
「Joel on Software」の第4章を立ち読みすることをお奨めする。
俺はそれで UTF-8 がASCII圏の奴らのワガママだと知ったw


649 名前:デフォルトの名無しさん mailto:sage [2009/03/03(火) 00:49:43 ]
米国でRuby関連書籍の売り上げが減速か − @IT

ttp://www.atmarkit.co.jp/news/200902/27/langs.html

そういうわけでRubyやめてC#かPHPやろうぜ。

650 名前:デフォルトの名無しさん mailto:sage [2009/03/03(火) 00:54:15 ]
言語仕様的にはPHPよりRubyの方がずっといいように思う。
便利は便利だが、もうPHPに戻るつもりはない。

651 名前:デフォルトの名無しさん mailto:sage [2009/03/03(火) 01:17:09 ]
禿げ堂
漏れもそう思ってPHPからRubyに乗り換えた
今はPythonを使っている

652 名前:デフォルトの名無しさん [2009/03/03(火) 01:58:52 ]
> UTF-8 がASCII圏の奴らのワガママ
たしかにそうかもしれんが、UTF-8は結構うまく考えられていると思うがな。

653 名前:デフォルトの名無しさん mailto:sage [2009/03/03(火) 05:02:03 ]
>>648
UnicodeではなくUTF-8?

654 名前:デフォルトの名無しさん mailto:sage [2009/03/03(火) 06:23:13 ]
他国語化考えてない古いアプリでも
UTF-8だと通ったりするからな
うまく考えられてるよ
そういう利点は素直に認めるべき



655 名前:デフォルトの名無しさん [2009/03/03(火) 12:10:12 ]
>>608
そんな俺は forth(というか concatenative language)に行く


656 名前:デフォルトの名無しさん mailto:sage [2009/03/03(火) 18:15:20 ]
1.9.1でしつもん
irb で1.9対応が怪しいライブラリを実行して
ArgumentError: invalid byte sequence in EUC-JP
というようなエラーが出る場合、「悪い」のは irb の設定?
それとも元のスクリプト?
それともライブラリそのもの?

657 名前:デフォルトの名無しさん mailto:sage [2009/03/03(火) 18:19:12 ]
マジックコメント入れて
ruby1.9 -E utf-8 hoge.rb
とか適当なエンコーディング指定してもエラーが出るなら、ライブラリの書き方が悪い可能性が大
マジックコメント入れてないなら、スクリプトが一方的に悪い

658 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 01:08:26 ]
>>652>>654
うん、確かにASCIIとの互換性を保ちつつ従来の文字エンコードの
課題を克服した、とてもよい設計だと思う。UNICODEの普及に
大きく貢献してるね。
>>648は「これで Joel に興味持ってくれたらいいな」とあえて偏見
気味に書いてみたw


659 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 01:41:22 ]
あっそ

660 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 07:12:54 ]
ということにしたいのですね

661 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 09:06:32 ]
void キタ! Rubyには型は無いのに!

662 名前:デフォルトの名無しさん [2009/03/04(水) 09:55:21 ]
型が無いわけじゃないんだけどな。

663 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 10:55:03 ]
一般的に型と呼ばれるもので「保証」されているあれこれがRubyには存在しない、が妥当な表現?

664 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 10:57:54 ]
プログラム言語の理論をあまり知らない初心者だけど、
一般的に型って言った場合、どういったものを指すの?

変数(入れ物)の型?中身(オブジェクト?)の型?
静的型言語って言った場合は、前者でいいのかな。



665 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 11:19:33 ]
>>664
そう
静的な型付けでは入れ物の型を先に決めるから、結果として入れることができる中身も限定される

666 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 11:45:05 ]
Rubyの概念的には
「変数そのものもなんらかのクラスのオブジェクトのようなもんである言語があるらしい」
だと思ってくれればそう間違ってもいない

bind_type(:str, String)

とすると str は絶対に String のインスタンスしか入らない(整数を代入するとTypeError)みたいなそんな感じ

667 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 12:40:32 ]
>>665
なるほど。中身そのものの型を変えられるのかどうかは知らないけど、とりあえず動的・静的って
言ってるときには、それはあんまり関係ないのかな。
あくまでも変数の型についての話、でいいのかな。

>>666
これは、TypeErrorを出しているのはその「なんらかのクラス」の機能ってことだろうか。
んでこういうこともできるから、一応Rubyに型がないわけではない、っていう意味?

668 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 12:52:27 ]
Rubyしかやらないのなら型について気にする必要は一切ない
公式には型はない
型のある言語を学ぶようになってから型について学べば十分

669 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 12:59:07 ]
中身の方に「お前は誰だ」って聞いてやればいいんだよね
unless(String == obj)
raise ArgumentError, "イテーヨシ"
end
みたいに。

670 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 13:09:07 ]
>>669
実行時にしか評価できないのなら型の実際的意味がない

671 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 13:12:41 ]
>>666
横から悪いが、何を言ってるのか分からんのだけど、どゆこと?

672 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 13:27:02 ]
静的だと値にも変数にも型がある
動的だと値には型があり変数にはない
とか

673 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 13:31:21 ]
>>670
型を間違ってコーディングした事を、実行前に知りたい、という事?
だったら趣味ならともかく、まともなアプリにはtestは必要なんだから、型の間違いはすぐ判る。
動的に切り替えできる必要がある場合は、動的型付けの方がやり易い。

>>671
>>664
横レスだが、型には多相型(Haskellなど)、単一型(C、Java、Rubyなど)があると思ってくれ。
単一型をさらに、静的、動的に分類可。

静的--->変数と型との対応が固定。
int i=1とした後、i='a'とするとエラー

動的--->オブジェクトと型との対応が固定。 変数とオブジェクトとの対応は可変。
a=1とした後、a="abc"と出来る。

>>672
> 動的だと値には型があり変数にはないとか
Rubyはそのとおり。

674 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 13:45:38 ]
>>673
いや、うん、そうだけど、あなたの言ってる事と>>666の内容は
およそ一致してると考えていいのかな?
俺にはそう取れなかったので



675 名前:673 mailto:sage [2009/03/04(水) 13:56:28 ]
>>674
「型についての知識が、静的型付け言語の範囲内」の人に始めてRubyを説明するときには、
>>666の表現は厳密ではないが受け入れ易いと思う。

676 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 14:17:33 ]
変数に型がないことを説明したいのに変数を型にはめることだけ例示されてもなー
という違和感が >>666 にはあるな

677 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 14:34:28 ]
文句言うなら自分で説明する
でもスレ違いなんだけど

678 名前:デフォルトの名無しさん [2009/03/04(水) 15:59:47 ]
俺がよく使うたとえ話としては

「変数は入れ物じゃなくて、ラベルみたいなもん」
「代入じゃなくて名前付け。データとかオブジェクトに対して名前をつける」
「ラベルはどんなオブジェクトにも貼り付けられる。型はオブジェクトそのものの属性」
「ラベルには賞味期限と有効範囲がある」
「すべてのラベルが剥がされると、参照不能になってGC様の餌になる」

厳密じゃないが、おおむねこれで理解してもらえてる。

679 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 17:53:38 ]
>>678
>「ラベルには賞味期限と有効範囲がある」
この辺をkwsk

680 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 18:03:07 ]
エクステントとスコープのことだな。

681 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 18:04:54 ]
Rubyに型がないという話なんて誰もしてないと思うんだが

682 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 18:10:52 ]
>>681
>>668

683 名前:デフォルトの名無しさん [2009/03/04(水) 18:17:44 ]
>>673
型testのコードは自動で生成されるの?
でなかったら結局人間による抜けがでそうだけど...


684 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 18:26:03 ]
便利さ・柔軟さのトレードオフとして危険性はある。

でも、プログラムは仕様通りの動作をすれば内部の変数にどんな型のオブジェクトがあるのかは関係ないし、
ライブライリーのpublicメソッドの引数なんかは型チェックをしてるよ。



685 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 18:34:44 ]
Ruby的にはオブジェクトの種類はどうでもいい
メソッドさえ動作すれば、引数のクラスは全く問わない
文字列の代わりに、Stringと同じメソッドが定義されてる別のクラスのオブジェクトを渡しても普通は動く

ただ、ぶっちゃけこの考え方は柔軟だが動作の保証が非常に面倒なので、勢い

raise ArgumentError unless param.is_a?(String)

とか書く

686 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 18:37:55 ]
bind_typeってどのバージョンから使える?

変数のエクステントって概念は知らなかった。
スコープの延長で、可視範囲から外れればだれからも見えなくなるから
忘れ去られると考えてた。これだと静的変数の説明がしにくいんだよな。

687 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 18:39:58 ]
>>686
bind_type は説明用の擬似的なメソッドだろう
あれば楽しそうだが

688 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 18:45:01 ]
respond_to?のお役立ち度の微妙っぷりは異常

689 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 18:56:33 ]
>>683
自動testはHaskell以外は知らない。
言語によらず、型に合った(or意図的にエラーを起こさせる)テストデータを与える必要があるんでは?

690 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 20:02:44 ]
>>680
そうかなーとは思ったのだが、「ラベル」の賞味期限とエクステントとがうまく結びつかない。
「オブジェクトには賞味期限があり、ラベルには有効範囲がある」なら納得なのだが。

691 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 20:19:30 ]
オブジェクトの賞味期限は貼るラベルによって変わってくるからいいんじゃない?
もうちょい気を利かせると「ラベルには賞味期限と有効範囲が書いてある」とかだろうか

692 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 21:03:27 ]
Smalltalkには、 Objectにbecome: というのがあった気がする。



693 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 21:28:13 ]
# v1.9.1
require 'prime'
Prime.instance.each_cons(2).select {|x, y| y - x == 2 }.first(10)

最初の10組の双子素数を求めようと、このようにすると、当然のように
selectから帰って来れません。ループ組んで10個見つけたら打ち切るみ
たいにするしかないでしょうか。


694 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 23:08:20 ]
仕方ないように見える
遅延評価があれば似たような書き方ができそうだが、
Rubyではサポートされていない



695 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 23:11:44 ]
selectってなんだっけ

696 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 23:17:53 ]
>>695
find_all

detect が find で
select が find_all で
collect が map だ






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

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

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