1 名前:デフォルトの名無しさん mailto:sage [2009/12/05(土) 14:21:25 ] プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。 ★注意★ Ruby 1.9.1 は初心者にはまだ時期早尚です。初心者には Ruby 1.8.7 を強くお勧めします。 (理由:現時点では多くの有名ライブラリやアプリが 1.9.1 に完全対応していないためです。) 1.8.7 でも 1.9 系に導入された新機能のいくつかが利用可能なため、1.8.7 を習得すれば将来スムーズに 1.9 系に移行できるでしょう。 関連スレやURLは>>2-5 あたりを見てください。Ruby on Rails の質問は Webプログラミング板の 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を読め」でいいので、叩かない&怖がらせない。 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
152 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 00:36:49 ] もとのxの件はオブジェクトと変数の違いではなく ローカル変数のスコープの問題だねえ。
153 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 00:38:42 ] >>152 そうですね。本当はそれが知りたかったわけですが・・・。 グローバル変数にすればいいんだけど、なんか気持ち悪い。
154 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 00:41:31 ] なんか引数で参照渡して、それを書き換えればいいんだよ〜 みたいなのはないんでしょうか? ・・・たぶんないんでしょうね
155 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 00:44:42 ] 引数で渡していいならArrayみたいな内部状態を持つオブジェクトに包んで 渡すくらいかね。
156 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 00:48:32 ] 初心者なんで間違っているかもだけど、参照渡しだから引数に渡された オブジェクト自体を書き換えることはできるよね? def method(str) {str.gsub! /a/, '!'} x = "katakana" puts x #=> "katakana" method x puts x #=> "k!t!k!n!"
157 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 00:48:47 ] やっぱそれですか。 議論によって問題の所在がはっきりしてきました。 おつきあいありがとうございます。
158 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 00:51:40 ] >>156 それはたぶん文字の配列わたしてるですね。
159 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 00:53:10 ] えっ?
160 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 00:53:23 ] そうだ、eval使おうか(笑)!
161 名前:156 mailto:sage [2009/12/13(日) 00:54:39 ] >>158 Ruby のStringオブジェクトの内部ってArrayで表現されていたんですか? 知りませんでした。>< C言語みたいですね。
162 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 00:56:25 ] 158ですが、私も初心者なので、フォローお願いします。 普通の言語なら文字列の扱いはそうなってるんじゃないかなぁ?
163 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 01:06:12 ] 何の意味があるか分からない思いつきだけど通りました。 X='12' def f X.gsub!('12','2') end f() p eval(X)
164 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 01:22:35 ] >>162 文字列がイミュータブル(変更不可)な言語は普通にあるよ Pythonなんかもそう >>> s = 'abc' >>> s[0] = 'A' Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'str' object does not support item assignment 上のごちゃっとしたところをまとめると * 変数はオブジェクトに付けられた矢印(あるいはラベル)。例: a = [1,2,3] * 変数を通じてオブジェクトを操作することが出来る。例: a[0], a[1] * Rubyの文字列はミュータブル(変更可能)なので 変数が指すオブジェクトの中身を書き換えることができる。例: a[1] = 20 # [1,20,3]
165 名前:156 mailto:sage [2009/12/13(日) 01:24:26 ] >>162 自分なりに調べてみました。 def method(obj) obj.object_id end str = "katakana" p str.object_id #=> 69877275538400 p method str #=> 69877275538400 この結果から分かりますが、上記の変数 str と obj は同一のオブジェクトを指しています。 したがって、変数 obj に対して破壊的なメソッド(オブジェクト自体を変更するメソッド)を使うと str が指しているオブジェクトも同一ですから、objに対して行った操作が反映されている、というわけですね。 あってますか? あと、Stringオブジェクトの内部表現については詳しくしりません。 Rubyのソースを読んでみればわかると思うのですが、まだそこまでのレベルではないので... スレ汚し失礼しましたです。
166 名前:164 mailto:sage [2009/12/13(日) 01:27:10 ] 例が文字列じゃなく配列になってた。それぞれ以下に読み替えて 例: s = '123' # sは文字列 '123' を指す 例: s[0], s[1] # sの一文字(バイト)目と二文字目を取得 例: s[1] = '5' # sの一文字目を '5' に変更 >>165 あってるお 内部表現なんて実装次第なんだから 出来ることを正確に把握するほうが大切
167 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 01:32:12 ] カビの生えた例だけどこんなのも貼っとく a = [0, 1, 2] b = a b[1] = 10 これでaが何になるのかわからなかった人は横着しないで入門書嫁
168 名前:140 mailto:sage [2009/12/13(日) 08:24:28 ] 昨日の者ですが、 結局クラスでラップする感じになるのかなぁ。 下は意図した通りに動きます。 def State(val) Monad.new(val) end class Monad def initialize(val) @val=val end attr_accessor :val end def f(st) st.val += 1 end X = State 1 f(X) p X.val
169 名前:140 mailto:sage [2009/12/13(日) 08:30:00 ] なるほどRubyって関数型言語だったのか!
170 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 08:33:09 ] Dir.globが探索するファイル/ディレクトリの条件って何ですか? i=0 Dir.chdir("C:\\"){Dir.glob('**/*'){i+=1}} p i =>150660 dir c:\ /s /b /a|find /c /v "" =>154483 C:\の全ファイルを選択→プロパティのファイル数+フォルダ数 =>153390 1〜2違うどころではないんだが・・・('A`)
171 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 09:22:12 ] >>170 DOSのコマンドを知らないから憶測だけど、 "."と".."を含めてる含めてないとか?
172 名前:デフォルトの名無しさん [2009/12/13(日) 09:40:23 ] >>170 日本語ファイル名が膨らまれているとか
173 名前:デフォルトの名無しさん [2009/12/13(日) 11:00:49 ] るびまのページいま停止中?
174 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 11:22:02 ] Ω ∅
175 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 11:44:38 ] p "あ" とすると、 "\202\240" 8進数で返ってくるのでわかりにくいです。 16進数で帰ってきて欲しいのですが、どうすればいいのでしょうか?
176 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 12:05:56 ] String#inspect の定義を変更すれば良い。 class String; def inspect; "\""+ self.each_byte.map{|c| "\\x%02x" % c }.join + "\""; end; end
177 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 12:15:41 ] 0x20...0x80はそのままにした方が目に優しそうだ あと?\と?"は別扱いでとか考え出したら面倒くせええ
178 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 12:17:32 ] >>176 それ、他のオブジェクトをinspectするときに影響が出ちゃわない?
179 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 13:03:51 ] 8進表記されてるのだけ、16進に直すのはどう? class String alias _inspect inspect def inspect self._inspect.gsub(/\\(\d+)/){ "\\x{%02x}" % $1.oct } end end
180 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 13:06:37 ] 文字列を16進表記にする関数的メソッドを定義するべきだと思うなあ
181 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 13:40:29 ] 直前の式の返り血が入ってる組み込み変数とかってないですか? Rubyを関数電卓代わりに使いたいんですけど
182 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 13:44:29 ] >>181 irb でよければ _ だと思う
183 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 13:44:54 ] >>181 irb irb> 1+2 3 irb> _ +4 7 まあ返り値ならなんでもいいんだけど irb> Time.now Sun Dec 13 13:40:19 +0900 2009 irb> _.year 2009
184 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 13:48:02 ] ありがとうございます できればirbじゃなくても使いたいんですが無いですか
185 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 13:52:21 ] 関数の戻り値は最後の参照みてるんだし @かなにかに保持してくれるといいと祈り続けて早10年
186 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 14:08:15 ] >>179 俺もそれ考えたけど"\\1000"とかで困る
187 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 15:24:26 ] >>180 こうするのが一般的? p "あ".unpack("H*")
188 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 18:12:58 ] PHPのcall_user_funcにあたる機能はRubyでも実現できますか? 実行時に呼び出すメソッドを切り替えたいのです。
189 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 18:15:34 ] >>188 send, evalなど
190 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 18:24:48 ] >>188 ありがとうございます。
191 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 18:25:33 ] 間違えた…>>189 でした
192 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 18:49:28 ] 異なる文字コードの文字列を同時に出力するとかじゃない限り 適切に漢字コードを指定しておけばちゃんと日本語表示されるんじゃないの? $KCODE = 'S' p "あ" > "あ" 文字じゃないバイナリ列とか表示させるときに16進文字列がいいのなら そういう出力メソッドを作るなりすれば
193 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 19:07:54 ] 1.9 なら encoding を文字列が持ってるからできるが、1.8 なら無理だね。 あと $KCODE は 1.9 じゃ廃止だ
194 名前:デフォルトの名無しさん mailto:sage [2009/12/14(月) 01:00:47 ] module Hoge def f1 end def f2 end ・・・ってかんじでメソッドがたくさんあったときに module_function :f1,:f2,... って全部書くしか、外からアクセスする方法はないでしょうか? end
195 名前:デフォルトの名無しさん mailto:sage [2009/12/14(月) 01:05:21 ] include Hoge で f1 や f2 を取り込めるよ
196 名前:デフォルトの名無しさん mailto:sage [2009/12/14(月) 01:12:46 ] 名前空間は汚染したくないので Hoge::f1 というアクセスだけ許したいのですが・・・ いちいち書くのは保守が面倒だと思ったので。 いま考えてるのは module_function self.methods.join(' ') #未完成 みたいな怪しい方法です。
197 名前:デフォルトの名無しさん mailto:sage [2009/12/14(月) 01:20:55 ] module M def m1; "m1"; end extend M end M.m1 #=> "m1"
198 名前:デフォルトの名無しさん mailto:sage [2009/12/14(月) 01:22:36 ] どんぴしゃです! ありがとうございます。
199 名前:デフォルトの名無しさん mailto:sage [2009/12/14(月) 05:51:45 ] メイン関数は書いた方が良いのでしょうか?
200 名前:デフォルトの名無しさん mailto:sage [2009/12/14(月) 06:07:46 ] >>198 リファレンスより If used with no arguments, subsequently defined methods become module functions. モジュール定義の頭に module_function と引数なしで書いておけば 以後に定義するメソッドにはすべて module_function が適用される。 public, private とかと同じだよ。
201 名前:デフォルトの名無しさん mailto:sage [2009/12/14(月) 06:28:54 ] >>199 メイン関数って スクリプトを実行した時に処理系が最初に呼び出すメソッド、という意味? そういう意味なら、書けない、でFA そんな取り決めないし
202 名前:デフォルトの名無しさん mailto:sage [2009/12/14(月) 07:36:02 ] >>199 def main() しとけばRubyがエントリポイントとして呼んでくれる、とかいうことはないよ ただ if __FILE__ == $0 ... って常套句を使って少し似たようなことはできる
203 名前:デフォルトの名無しさん mailto:sage [2009/12/14(月) 08:32:24 ] >>199 ruby -e 'p self'
204 名前:デフォルトの名無しさん mailto:sage [2009/12/14(月) 08:53:07 ] 俺最初なんとなくmainてメソッド書いて if __FILE__ == $0 main end って書いてたな
205 名前:デフォルトの名無しさん mailto:sage [2009/12/14(月) 11:18:57 ] >>200 これでもいいなぁ。 ttp://ruby-doc.org/core/classes/Module.html#M001642 ですね。 初心者はドキュメントのどこを見ればいいかも分からないので、とても助かります。
206 名前:デフォルトの名無しさん [2009/12/14(月) 11:43:32 ] >>199 いろんなソース読んだ限り、 Rubyではこんな感じで書いている人が多い。俺も習ってる class Application def initialize end def run # ここにメイン処理 end end if __FILE__ == $0 Application.new.run end
207 名前:デフォルトの名無しさん mailto:sage [2009/12/14(月) 13:15:18 ] 待て、$0って廃止予定じゃなかったか
208 名前:デフォルトの名無しさん mailto:sage [2009/12/14(月) 13:29:31 ] 心配なら$PROGRAM_NAMEを使っておけ。
209 名前:デフォルトの名無しさん mailto:sage [2009/12/14(月) 13:30:08 ] あと10年は1.8使い続けるから無問題
210 名前:デフォルトの名無しさん mailto:sage [2009/12/14(月) 13:33:57 ] まあ、$0 が動かなくなる頃にはそのスクリプト本体もどっか手入れしないと動作しないとは思う そのときにその人に直してもらうことにして $0 は使ってもよし $PROGRAM_NAME はバージョンによらず使えるんだっけ?
211 名前:デフォルトの名無しさん mailto:sage [2009/12/14(月) 13:38:35 ] 質問が有ります。 引数があれば引数で指定したファイルに 引数がなければ標準出力(もしくはエラー出力)に文字列を出したい場合はどのように書いたものでしょうか?
212 名前:デフォルトの名無しさん mailto:sage [2009/12/14(月) 13:46:34 ] そのまんま if とかで書けばいいと思うよ!
213 名前:デフォルトの名無しさん mailto:sage [2009/12/14(月) 13:48:20 ] if (ARGV[0]) $stdout = File.open ARGV[0] end こんな感じニカ ?
214 名前:デフォルトの名無しさん mailto:sage [2009/12/14(月) 13:51:15 ] こんな感じか if ARGV.length > 0 f = open(ARGV[0], "w") else f = $stdout end f.write "hello"
215 名前:デフォルトの名無しさん mailto:sage [2009/12/14(月) 13:52:13 ] >>211 def output if filename = ARGV[0] File.open(filename, "w"){|f| yield f } else yield $stdout end end output{|io| io.write "a"} closeめんどくせえ
216 名前:デフォルトの名無しさん mailto:sage [2009/12/14(月) 13:55:43 ] > closeめんどくせえ うむ $stdout.close がIOError で拒否られたときは軽く眩暈がした
217 名前:デフォルトの名無しさん mailto:sage [2009/12/14(月) 17:25:48 ] >>211 個々のプログラムでそういうことをするより シェルのリダイレクトやパイプを使いなさいと言いたいのだが 出力先をプログラムの引数として受け取らなければならない理由はなんだろう?
218 名前:デフォルトの名無しさん mailto:sage [2009/12/14(月) 18:09:37 ] STDOUT にログ出力をするタイプのプログラムはたいてい引数指定 たとえば wget
219 名前:211 mailto:sage [2009/12/14(月) 19:36:53 ] >>212-215 ありがとうございます、ありがとうございます いろいろ方法ありますね。 >>217 事の発端は、最初は標準出力に出してリダイレクト(?でしたっけ)でファイルに書いていたのですが、 ファイルには出したくないBenchmarkとかで計測した結果も表示したくなってそうすると、 どうしたものかって感じになりました。 こういう時って計測結果などはエラーに出せばいいもんですかね?エラーに出していいものかどうか。 >>218 wgetは引数でファイル指定でしたっけ
220 名前:デフォルトの名無しさん mailto:sage [2009/12/14(月) 20:14:48 ] wget -O
221 名前:デフォルトの名無しさん mailto:sage [2009/12/14(月) 20:19:22 ] 質問です。 時間の計算するにはどのクラスを使えばいいでしょうか? 具体的には時間の差分を加算したりしたいのです。 例えば、 elapsed_time += Time.local(2008,12,14,1,50,10) - Time.local(2008,12,10,1,50,10) のような感じ(実際にはTime.localの中身は可変) elapsed_timeをTimeにする場合だと初期化にTime.at(0)しても Thu Jan 01 09:00:00 0900 1970 になったり、 0からの時間を考えられていないようなのです。
222 名前:デフォルトの名無しさん mailto:sage [2009/12/14(月) 20:24:17 ] >>221 基本的には「ない」 61s が 1m1s になるような、秒数のみを表すクラスというようなのは標準では存在しない
223 名前:デフォルトの名無しさん mailto:sage [2009/12/14(月) 20:25:23 ] >>221 Time.at(0).to_i
224 名前:デフォルトの名無しさん mailto:sage [2009/12/14(月) 20:26:07 ] >>222 そういうことか、>>223 は忘れて
225 名前:221 mailto:sage [2009/12/14(月) 20:35:18 ] ありがとうです ないですかー。 何が困るかというと、加算した差分の時間を例えば書式で出力するときにstrftimeみたいなのを自前で書かないといけないってことですよね。 誰かそういうの作ってないか探してみたんですがどうも無いようで・・・。 active_supportとかの日付の拡張あたりでなんとかならないもんですかね。
226 名前:デフォルトの名無しさん mailto:sage [2009/12/14(月) 20:49:16 ] time = 100000 sec = time % 60 min = (time / 60) % 60 hour = (time / (60 * 60)) % 24 day = time / (24 * 60 * 60) puts "%dday %d:%d:%d" % [day, hour, min, sec] こんなんでいいか?
227 名前:221 mailto:sage [2009/12/14(月) 21:01:02 ] >>226 ずばりそのまま書いてくださってありがとうさんです。 使わせていだきます。 ActiveSupport使ってもこんな感じですか。かわらないやw time = 100000 sec = time % 60 min = (time / 1.minute) % 60 hour = (time / 1.hour) % 24 day = time / 1.day puts "%dday %d:%d:%d" % [day, hour, min, sec]
228 名前:デフォルトの名無しさん mailto:sage [2009/12/14(月) 22:30:38 ] 二年ほど前にdevでTimeSpanというクラスが提案されたことはあるみたいだねー。 立ち消えしてるのかな、これは。
229 名前:デフォルトの名無しさん mailto:sage [2009/12/14(月) 22:34:40 ] .NETからそのままいろんなクラスパクってくりゃいいのに
230 名前:デフォルトの名無しさん mailto:sage [2009/12/14(月) 22:36:53 ] やだあんな使いにくいAPI .NET好きな人はIronRuby使ったらいい
231 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 00:52:12 ] 数値積分や微分できるようなライブラリとかってないですか? Rubyを関数電卓代わりに使いたいんですけど
232 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 00:58:10 ] パッチレベル上がったのにmingwでmake通らん
233 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 01:01:41 ] >>231 よくわからんけど「Ruby 数値積分 微分」でぐぐってみた ttp://jp.rubyist.net/magazine/?0006-RLR こっちは結構すごそうだぞ ttp://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/39950
234 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 01:01:55 ] GSL(GNU Scientific Library)のRubyバインドがあるようだ。 詳しくは見ていないけど、数値積分や微分はあるみたい。 ただし、最後のリリースが約2年前というのが気掛かり。 十分枯れているのだろうけれど、新しめのRubyで動くかは不明。 ところで、本格的な数式処理なら、Maximaとか使ったほうがいいんじゃない?
235 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 01:05:33 ] かぶりんこ。
236 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 01:43:08 ] ありがとうございます 導入めんどくさそうですけど頑張ってみます
237 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 02:03:40 ] 数値積分や微分できるような関数電卓を持っていたら、それを使う。 でなければ、カシオの計算センターとか。 自前のコードからコールしたいなら、ついでにそっちも自分で書いてしまう。 てのは、いかがでしょう。
238 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 06:35:31 ] >>219 > ファイルには出したくないBenchmarkとかで計測した結果も表示したくなって 標準ライブラリの Logger を使ってみるというのは? jp.rubyist.net/magazine/?0008-BundledLibraries
239 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 09:20:54 ] いわゆる数値計算には向かないよね、Ruby
240 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 09:53:38 ] しかし、「5分で作って5秒で実行させる」ような、「計算機なんだから計算できてもいいんじゃね」という カジュアルなデータ計算をさせることが期待されるプログラミング言語のトップグループにいることは間違いない 専門数値計算ソフトやC(やJava)を持ち出さなくてもいい程度の計算なら、もっと気楽にできてもいい 高校や大学1年教養の宿題をうっかり解けてしまうような、そんな用途があってもいいはず
241 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 10:06:28 ] そういう用途ならあるげぶらーじゃね
242 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 10:09:15 ] Rでもいいしますまてぃか覚えるのでもいいしいっそExcelでも充分使える範囲である可能性も高いな
243 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 10:20:55 ] カタカナでおk
244 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 10:28:35 ] アールやエクセルってなんか変だろ
245 名前:221 mailto:sage [2009/12/15(火) 15:52:28 ] >>238 ああ、その手もありました!その名のとおりログのこりますしLoggerいいですねw
246 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 15:56:00 ] 数値計算したいんなら構文的にPython+numpyのほうがいいよ。Rubyには不向き。
247 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 18:38:35 ] >>221 ワンライナーで時間の計算をする時に24時間以内なら ruby -rtime -e "a=Time.parse('09:08:20')-Time.parse('01:40:02');puts Time.at(a).utc.strftime('%H:%M:%S')" とかしたりしますな
248 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 18:47:01 ] ていうか、やろうと思えば結構できるんだよ でも自己責任の域を出れない
249 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 18:54:35 ] name=gets puts "私は#{name}です" nameに日本語を入力するとエラーが出てしまいます C:/My Documents/g/Ruby/test.rb:4:in `<main>': incompatible character encodings: ASCII-8BIT and Windows-31J (Encoding::CompatibilityError) これはどういったエラーなんでしょうか?
250 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 19:03:50 ] >>249 初心者は Ruby1.9 使うなってこれだけ言われてるのになんでわからんのだエラー
251 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 19:08:17 ] それってスクリプトつーか内部文字列がWindows-31Jで標準入力がASCII-8BITってこと? Windows-31Jがロードできたら標準入力もそっち使うようになってなかったっけ どういうときにそんなことになりえるのか知りたい、誰か教えて
252 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 19:08:20 ] スレタイに【1.9】 【使うな】っていれとけよ