- 1 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 01:07:21 ]
- プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。
【Ruby1.9 は不安定な開発版であり初心者には全く向きません】 【最新安定版の Ruby1.8.7 の使用をお勧めします】 ※1.8.7 は1.8 と 1.9 の橋渡しをするためのリリースです。 1.9 の新機能の一部が利用可能なので初学者にお勧めです。 ※ただし十分安定しているとは言えないので プロダクション環境での利用にはお勧めしません。 関連スレやURLは>>2-8あたりを見てください。Ruby on Railsの質問はRailsスレへ。 ■質問する人へ 質問する前に次の3つをすること。ここで回答を待つよりそのほうが早い。 ・モジュール名やエラーメッセージでググる ・マニュアルで引っかかったクラスの記述を探す www.ruby-lang.org/ja/man/ ・FAQを一応読む www.ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ 質問には以下を書くこと。へたくそな質問は再提出を要求される。 ・詳しい内容(「動きません」「うまくできません」では回答しようがない) ・エラーメッセージ(自力で訳さずなるべくそのままで) ・実行環境(OS名、Rubyのバージョン(ruby -v でわかる)) ・最終的にやりたいこと(もっとよい方法がある場合が多いので) 回答してくれた人には「ありがとう」のひとことをいってあげて。 ■回答する人へ 相手は初心者、根気よく育てるつもりで。質問がへたくそなのも大目にみてあげる。 それができないならこないこと(だって初心者スレだもん)。 ・既出な質問やFAQは「XXXを読め」でいいので、叩かない&怖がらせない。 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
- 792 名前:デフォルトの名無しさん [2008/09/09(火) 20:56:53 ]
- >>790
ある変数て… Ruby の変数には型がないって、このスレの今日の部分にも書いてあるよね とりあえず、入門書を読んでみなよ
- 793 名前:730 mailto:sage [2008/09/09(火) 21:04:08 ]
- >>792
それは理解しましたが、 私が聞きたいのは型に関することではなく(実質は型のようなものでしょうが)、 ヒューマンエラーで誤って100などの数字を代入しないよう、 安全な代入操作を行いたいだけなんです。 ヒューマンエラーで誤って100などの数字を代入しないために。
- 794 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 21:06:56 ]
- >>793
if文って知ってる?
- 795 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 21:08:48 ]
- レヴェルの低いのがからんどるな
- 796 名前:デフォルトの名無しさん [2008/09/09(火) 21:10:03 ]
- たぶんチンコがはえてないんだろw
- 797 名前:730 mailto:sage [2008/09/09(火) 21:10:37 ]
- >>794
代入文を書く直前にif文を書かずに済む方法はありますか?
- 798 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 21:11:01 ]
- >>790
オブジェクトという言葉を一度も使ってないことが気にかかる Rubyはすべてのものがオブジェクトだ 変数と呼ばれるものは、該当するクラスをnew(とか)して作ったオブジェクト(インスタンス)に名前を付けたものに過ぎない 変数という入れ物は存在しない オブジェクトというものについて勉強することを勧めるよ これを大まかにでも理解しないままRubyの勉強を進めるとか遠回り過ぎて気が遠くなる で、回答は 「オブジェクトに登録するときのメソッドをフックする、または専用の登録用メソッドを作成する」 というのが一般的だと思われる
- 799 名前:デフォルトの名無しさん [2008/09/09(火) 21:11:35 ]
- はよ初心者サイト行け
- 800 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 21:11:58 ]
- >>790
class C def foo=(v) raise if v < 0 || v > 10 @foo = v end def foo @foo end end o = C.new o.foo = 11
- 801 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 21:12:43 ]
- >>794
if文知ってるとチンコはえてきますか?
- 802 名前:730 mailto:sage [2008/09/09(火) 21:12:55 ]
- >>798
ありがとうございます。
- 803 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 21:13:17 ]
- >>790
ローカル変数やインスタンス変数に入る値(=代入されるオブジェクトの内容)を、自動的に制限する方法は 基本的には存在しない。テストで頑張るのが常道 ただし、アクセサメソッドを上書きすることで obj.parameter = 100 といった代入の形に限り、何らかの制限を行うことはできる
- 804 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 21:14:50 ]
- >>798 の毒され方が気になる
- 805 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 21:19:41 ]
- >>804
確かに、かなりの重症患者だろうな… ラムダ使いも、度がすぎると全く未知の方法を編み出すんだろう…
- 806 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 00:41:31 ]
- >>790
言語レベルで規制はできない。 やりたかったら、不正な値ならraiseするんかな
- 807 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 00:54:41 ]
- >>806
そのへんは一応>>798ではある、んだが Rubyにおける「変数のイレモノ」の実体はそれの指すオブジェクトだからな 他の言語における「変数作成時に何かしたい」は「オブジェクト作成・操作時に何かする」だろう というか、他の言語での変数ってデータのカタマリを指すラベルのようなものじゃないのか?
- 808 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 01:39:07 ]
- >>790の言語経験がわかんないよね。
アセンブリとかCOBOLとかperlとかかね。 案外Pythonとかhaskellとかバリバリ使ってるのに 釣りに来ただけだったりw
- 809 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 07:08:07 ]
- 「変数には型がない。オブジェクトには型がある。」
といくら説明しても理解できない人にぶちあたると徒労感でいっぱいになる。
- 810 名前:デフォルトの名無しさん [2008/09/10(水) 07:09:54 ]
- 関数型言語使ってる人とは、これほどパラダイムが違うなんて思ってもみなかったは…
- 811 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 10:03:17 ]
- >>809
そりゃその2つの間には関連性は希薄だからな 並べられて説明されるほど混乱するのはあたりまえだと思う
- 812 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 11:00:52 ]
- オブジェクトについてのことを変数の文脈の「型」を絡めて説明するのは誤解招いてキケンだと思う…
- 813 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 12:46:47 ]
- メタ議論は他所でやれ
- 814 名前:730 mailto:sage [2008/09/10(水) 12:57:05 ]
- オブジェクト指向でプログラミングするとバグ取りが大変ですね。
久しぶりにこの感覚味わいました。
- 815 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 14:52:26 ]
- Cだといくら難しくても構造体とポインタは避けて通れないからね…
- 816 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 15:03:12 ]
- 文法レベルで躓く男の人って・・・
- 817 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 15:40:58 ]
- Perlだと、呼び出しの後に関数の定義があっても、きちんと認識してくれるのですが、
--------------------------------------------------- func(); sub func { print "in func"; } --------------------------------------------------- 以下、Rubyだとエラーが出ます。 --------------------------------------------------- func #=>undefined local variable or method `func' for main:Object (NameError) def func print "in func" end --------------------------------------------------- エラーを出さないようにするには、関数を呼び出しの前に書くしかないのでしょうか?
- 818 名前:pl791.nas924.p-hokkaido.nttpc.ne.jp mailto:sage [2008/09/10(水) 16:30:23 ]
- >>817
Rubyには関数はない クラスやオブジェクトに関数があるということもない メソッドのことを関数だと解説している本やサイトがあるなら晒せ で、答はYES クラスやメソッドの定義式の評価は実行時に行われる 実行時ということは1行目から順に実行されてるときということで、 つまり定義前のメソッドが書かれてた場合はエラーだ まあぶっちゃけた話をするとすぐ慣れる 関数定義みたいに後ろに倉庫的にどっさりあったほうがすっきりするよねと思うことは今もあるが
- 819 名前:pl791.nas924.p-hokkaido.nttpc.ne.jp mailto:sage [2008/09/10(水) 16:31:19 ]
- お、何だ何だ
- 820 名前:デフォルトの名無しさん [2008/09/10(水) 16:50:03 ]
- 長い説明よりスクリプトの方にしてちょ
- 821 名前:p3070-ipad304kobeminato.hyogo.ocn.ne.jp mailto:sage [2008/09/10(水) 17:02:55 ]
- メソッドと関数の違いがわかりませんえん
- 822 名前:デフォルトの名無しさん [2008/09/10(水) 17:03:25 ]
- >>818
そもそもオブジェクト指向というパラダイム自体不細工。 所詮は商業主義の世迷い事。 いかにも新しいことを考えましたよ、って言いたいがために新しい言葉を作っただけのこと。 本来はメソッドは関数と呼ぶべきだし、クラスも構造体と呼ぶべき。
- 823 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 17:33:18 ]
- >>822 には触れないほうがいいよ
- 824 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 17:41:30 ]
- >>818
サンクス 了解しました
- 825 名前:デフォルトの名無しさん [2008/09/10(水) 17:52:18 ]
- >>823
型理論よりもちゃんとした理論体系が確立されているんですか? 間違いを通そうとして話をそらさないでくださいよ。
- 826 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 18:18:59 ]
- オブジェクト指向の次って何があるの?
- 827 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 18:19:39 ]
- >>825
そういう事は、それ系のスレかお前さんのブログでやってくれ。 Ruby のスレでオブジェクト指向のパラダイムを受け入れてるのは当たり前だろ。
- 828 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 18:25:16 ]
- 変数とオブジェクトの違いも曖昧な奴に、オブジェクト指向を語れるのか?
>>827と同じ意見だけど…
- 829 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 18:25:51 ]
- しかしよく釣れるスレだなw
- 830 名前:デフォルトの名無しさん [2008/09/10(水) 18:26:42 ]
- >>828
誰と混同してるんだ?
- 831 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 18:32:31 ]
- >>826 エージェント指向とかアスペクト指向とか
- 832 名前:デフォルトの名無しさん [2008/09/10(水) 18:32:57 ]
- なんだ厨房しかいないのかw
- 833 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 18:36:30 ]
- >>826
遅延評価、monad、arrow、pi-calculus
- 834 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 18:39:01 ]
- >>831
エイジェント指向ってのは一つのプログラムを作るための概念ではないよ。 もっとマクロな協調動作を目指したもの。 クラスタとかグリッドとかそっち方面の技術だよ。
- 835 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 18:40:20 ]
- 技術ではなくて概念 か。
- 836 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 19:16:46 ]
- 「能」という漢字を扱おうとすると必ず
unterminated string meets end of file というエラーが出ます。どうしてでしょうか?
- 837 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 19:17:43 ]
- ほかの漢字のときは大丈夫なんです。
「芸能」がダメで、「芸」はOKなんです。
- 838 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 19:27:56 ]
- さあいますぐ
能 能\ それぞれをShift_JISで保存してバイナリエディタで開いてみるんだ
- 839 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 21:19:16 ]
- >>837
偉大なるKENT様のご説明 文字化けについて www.kent-web.com/pubc/jcode/index.html
- 840 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 21:47:26 ]
- KENT様・・・
- 841 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 22:42:40 ]
- >>801
うん。ひと晩で二、三本は生えてくるよ
- 842 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 22:43:37 ]
- 何で朝鮮人は嫌われてるんですか?
- 843 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 22:56:51 ]
- >>842
汚くて臭いからさ
- 844 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 23:42:15 ]
- >>831
アスペクト指向はオブジェクト指向の二番煎じ。 ITバブル時代に新しい言葉を作ってビジネス機会を作ろうと企んだが失敗に終わりそうな概念です。 ほかにもajaxとかWEB2.0とか、いろんな言葉が作られて消えていきましたが、 全部商業主義的な目的から作られた物です。 この業界をかき乱すのもそろそろやめてほしい。
- 845 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 23:44:57 ]
- 新しくも無いのにわざわざ特別な名前を与えていかにも新しくてすごそうに見えるように宣伝して儲ける手法。
全部誰かが裏で糸を引いているんじゃないかと思うほど手口が似ています。
- 846 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 00:10:05 ]
- >>844
あんたが「本物のプログラマ」だという事はよく分かったから、 お菓子好きの集まるこのスレにはこないでくれ。
- 847 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 07:48:45 ]
- >>844
ハスケルは学者ばかりですし、そっちではたくさん高級なメタ議論してますよ。
- 848 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 07:58:38 ]
- だからさ,スレ違いだしもう触れるな,っての
- 849 名前:mx.narihara-lab.jp mailto:sage [2008/09/11(木) 08:38:43 ]
- >>844
> アスペクト指向はオブジェクト指向の二番煎じ。 そうなの? 「MOP の二番煎じ」だとばかり思ってたんだが…
- 850 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 20:56:56 ]
- Web2.0が商業用語ってどんだけ
商業にすらなってないわ
- 851 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 21:06:21 ]
- >>850
今日のおまんこの締まり具合はどうですか?
- 852 名前:730 mailto:sage [2008/09/11(木) 21:08:49 ]
- 質問です
シンボルを宣言するとき:hogeのように記述しますが、 「:」というのはメソッドなのでしょうか? 「:」のようなメソッドを宣言する方法を教えてください。
- 853 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 21:27:10 ]
- >>852
メソッドじゃない。 つーかいい加減マニュアル読めよ
- 854 名前:デフォルトの名無しさん [2008/09/11(木) 21:30:26 ]
- RubyスクリプトがOut of memoryで終了してしまうんですが
どこでメモリ消費してるのか調べるプロファイリングツールみたいのはありますか?
- 855 名前:730 mailto:sage [2008/09/11(木) 21:33:41 ]
- >>853
どこに書いてありますか?
- 856 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 21:40:14 ]
- Stringを作るための ' や Array を作るための [ と ] がメソッドじゃないのと同じようなもんだな
- 857 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 21:41:57 ]
- >>854
ruby -profile hoge.rb ただし、これは死ぬほど重いので、rubygem の ruby-prof とかを使う
- 858 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 21:48:56 ]
- >>855
www.ruby-lang.org/ja/man/html/_A5EAA5C6A5E9A5EB.html#a.a5.b7.a5.f3.a5.dc.a5.eb
- 859 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 21:49:09 ]
- >>855
だから聞く前に読めよ
- 860 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 21:51:27 ]
- Out of memory は RubyMagick でよく見たなあ
- 861 名前:730 mailto:sage [2008/09/11(木) 22:02:15 ]
- >>858
ありがとうございます
- 862 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 23:41:24 ]
- 煽るような回答しかしてない人はわからないんですね、わかります。
- 863 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 08:40:45 ]
- 何を聞きたいのかイマイチ不明。
|

|