Ruby
- rubyでのproc
rubyでのproc http://d.hatena.ne.jp/shunsuk/20090101/1230816826 ここのサイトで解説されていることなんですけど, 「同じblockを何度も使いたいときがあります。そんなときに再利用するためのコードがProcです。blockとProcの唯一の違いは、blockは保存できないということです。Procについて見てみましょう。」 とあるのですが,なにをもってblockは保存できないといってるのでしょうか? 「lambdaはメソッドと同じように振る舞いますから、returnを使うことができます。この意味の違いは、下の例に現れます。」 の下にサンプルプログラムがあると思いますが, puts generic_return(Proc.new { |x, y| x + 2; y + 2 }) puts generic_return(Proc.new { |x, y| [x + 2, y + 2] }) この2行ではエラー処理が行われず,なんらかの出力がされています, これはなぜでしょうか?メソッドの中にreturnがある限りエラー処理が起こると思っているのですが・・・ あと,あまり関係ない質問になるかもしれませんが array.iterate!(method(:square)) このような記述のとき,squareは関数名ということはわかるのですが, :(コロン)これはなにを指すのでしょうか? よろしくおねがいします.
- /(.)(\d\d)+(.)/ =~ "123456"のとき、 p $
/(.)(\d\d)+(.)/ =~ "123456"のとき、 p $2とすると、"45"となるのはなぜですか? p $2 #=>23 となると思っていました。 そして、いったい23はどうすれば後方参照できるのですか?
- Ruby1.9で上書き禁止でのファイルコピーする方法について。
Ruby1.9で上書き禁止でのファイルコピーする方法について。 次のようなロジックを組んでいますが、同一ファイルがある場合でも上書きをしてしまいます。 同一ファイルは上書きさせないようにするにはどうすれも良いでしょうか? file1 = "C:/*.*" file2 = "C:/デバッグ用2/" FileUtils.cp(Dir.glob(file1),file2) どうか宜しくお願い致します。
- 基本プログラミングのrubyの課題を作ってもなかなか動きません。これを
基本プログラミングのrubyの課題を作ってもなかなか動きません。これをどうやったら動くようになるでしょうか??何がダメなんでしょう?教えてください・・!(>_<;)) 【問題】 問題1-3 についてはプログラムcreate data.rbを一度実行して作られるファイルmarks2010 を元に取り組むこと.ただし,create data.rb は実行する毎に異なるデータを出力するので,課題で作成する提出ファイル(results2010 等) 作成では, 同一のmarks2010 を用いること.また,使用したmarks2010 を提出すること. 1. ファイルmarks2010 は1000 行からなるデータであり,各行は次のように,学生氏名,10 回分 の試験成績が記されている: "西郷あかり": 50, 33, 67, 64, 47, 27, 42, 51: 45 ただし,受験回数が10 回に満たない者もある.また,最終試験を受けた場合,その成績は行 の最後にコロン「:」の後に記載してある. このファイルから下の基準で各学生の最終成績(点数) を求め,全員の最終成績をファイル (results2010 1) に保存するプログラムを書きなさい(prog1.rb). >ruby prog1.rb marks2010 を実行すると,ファイルresults2010 1 が作成されるようにする.ただし,結果のファイル は,各行一人の氏名と成績を次のように記述したものとする: "西郷あかり": 47.3 ※成績は小数点以下第一位まで.それ以下は四捨五入. 成績基準: 全試験(最終試験も含む) の平均点 また,60.0 点以上を合格として,合格者の氏名と本人の最終成績が記されたファイルpassed2010 1 を作成しなさい. 2. 上と同じファイルmarks2010 に対して,次の基準を用いて前問と同様のことを行いなさい.た だし,提出ファイル名は,(prog2.rb), (results2010 2) および(passed2010 2) ? 成績基準:欠席は2 回まで認め,それ以上の欠席の試験は0 点とした平均点※ ? 60 点以上が合格 ※つまり,試験を3回欠席した場合,全10 回の試験のうち,2回の欠席が認められ,残り1 回の欠席は得点0 と計算される.したがって,試験は8回受けたこととして計算され,実際に 受験した7回分の得点と,実際には受けていない1回分の成績0 点の合計点を8 で割った平均 点が最終成績となる. 【私の作ったプログラム】 infile=open("marks2010","r") outfile=open("results2010 1","w") while data=file.gets split(/[:,]/) print data,\n end arry=file.gets s=0 arry.each{ |i| s=s+i } puts s.to_f/arry.size end infile=close outfile=close ちゃんと名前と平均が出ると思ったんですけど・・・・(T_T)泣
- RubyとMeadow(Emacs)について
RubyとMeadow(Emacs)について 自分のパソコンにRubyとMeadowをインストールしたんですが、 Meadowでソースプログラムを作ってからコマンドプロンプトでそれを実行しようとすると ’ruby’は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 と出てきてしまいます。 どうすれば実行できるのでしょうか? 教えていただきたいです。 ちなみにこれは夏休みの宿題で、 プリントに書かれていたとおりにやりました。 間違いがないか自分でなんども確認しましたが、 たぶん書いてあることは間違っていないと思います。 どのようにやったかというと、 Meadowでhello.rbというファイルに print("Hello, Ruby World !\n") と打ち込み、c:\progIに保存。 コマンドプロンプトを開いて progIに移動し、 ruby hello.rb →[Enter] です。
- Ruby1.9で日付と時刻を合成したい。
Ruby1.9で日付と時刻を合成したい。 日付型で日付と時刻を合成して、日付型の日付時刻を合成したいのですが、 うまく行きません。 <やりたいこと(例)> 日付:2001/01/01 時刻:01:02:03 合成して、2001/01/01 01:02:03としたい。 ※いずれも日付型(文字型ではありません) <試行したこと> 日付:ddd = Date.today 時刻:hhh = Time.now date = ddd + hhh ここでundefined method '+'となります。 また、時刻だけを定義出来るクラスはないのでしょうか。 Timeでは時刻だけと思ったのですが、日付+時刻のようです。 こちらもアドバイス頂ければ幸いです。 どうか宜しくお願いいたします。
- Ruby1.9での日付操作に関して。
Ruby1.9での日付操作に関して。 次の2つについて質問させてください。どうぞ宜しくお願い致します。 (1)文字列を日時に変換する Time.parse("Tue Apr 10 04:54:42 JST 1970")は正常に変換されますが、 Time.parse("Tue Apr 10 04:54:42 JST 1969")はtime out of range(ArgumentError) となりエラーとなります。 何となく意味は分かるのですが、この範囲を拡張することが出来ますでしょうか。 (2)通算日の数値から日付を求める 上記の(1)が解決していることを前提として、基準日付=1900年1月1日0時00分00秒からの 経過を表わす数値(=1日を1.0とする)から、日付を求めたいのですが、ロジックが思いあたりません。 何か良い方法があればご教示頂けませんでしょうか。 <例題> 20323.27430556の場合は、"1955-08-22 06:35:00"としたい。 実は、上記の例題の逆は組んだのですが、その逆(この例題)がうまく作れません。 どうか宜しくお願い致します。
- Ruby1.9で文字列の置換がうまくいきません。
Ruby1.9で文字列の置換がうまくいきません。 以下の処理を実行すると、gsubのところでEncooding::CommpatibillityError とエラーが発生してうまく置換が出来ません。 何が原因でしょうか。あるいはもっと簡単な方法で置換する方法がありましたら ご教示のほどお願いいたします。 <仕様> 半角、全角に関係なく指定文字で置換する。 ※大文字部分は実際は全角文字です。 moji1 = 1abc56abcABC" moji2 = "abc" moji3 = "CBA" ⇒正しい置換結果は、"1CBA56CBAABC" #半角→全角 空白含 moji2 = moji2.tr('a-zA-Z0-9 - ', 'a-zA-Z0-9 - ') moji2 = NKF::nkf( '-SsXm0', moji2 ) data = moji1.gsub(moji2,moji3) ↑↑↑ここで上記のエラー発生する。 どうか宜しくお願いいたします。
- Ruby(1.9)で2進表示として文字型に変更したい。
Ruby(1.9)で2進表示として文字型に変更したい。 次のような2進数表記のまま、文字型に変更する方法はありますでしょうか。 0b0001⇒"0b0001" 当然かと思いますが、0b0001をto_sすると"1"となりました。 どうか宜しくお願いいたします。
- Rubyで数値型の進数の型を知りたい。
Rubyで数値型の進数の型を知りたい。 例えば、2進数の数値表現0b0001のクラスはFixnumとなります。 その数値が、10進数なのか、2進数なのか、8進数なのか、16進数なのかを 知る方法はありますでしょうか。 data = 0b0002 p data.class ⇒Fixnum 宜しくお願いいたします。
- railsのscaffoldにて作成したプロジェクトの
railsのscaffoldにて作成したプロジェクトの ViewsのEditのlink_toの第二引数の値がどこで設定されているかわかりません。 例えば、モデル名を"student"にてscaffoldを実行すると、 index.html.erbのEditはこのようになります。 <td><%= link_to 'Edit', edit_student_path(student) %></td> この"edit_student_path"というのが、何者なのかよくわかりません。 どこかで定義されているわけでもなく、動的に生成されているようですが、 仕組みが全くわかりません。 出力されたhtmlの該当部分はこのようになってます。 <a href="/students/1/edit">Edit</a> 現在、scaffoldにて生成したコントローラとビューを一階層掘り下げようとしている所で、出くわした問題です。 controllers/students_controller.rb views/students/index.html.erb ↓ controllers/hoge/students_controller.rb views/hoge/students/index.html.erb どなたかご教授いただけますでしょうか? ちなみにrailsのバージョンは2.3.5です。
- Ruby1.9での数値→文字変換について。
Ruby1.9での数値→文字変換について。 以下のようにfloat型の数値を文字に変換したいのですが、 どのようなロジックで書けば宜しいでしょうか? (例) 1.1→"1.1" 1.12→”1.12” 1.123→”1.123” sprintf("%f",data)を使っていますが、上記の1.1の例ですと "1.100000"となってしまいます。つまり、不要な"0"を取りたいのです。 また、少数点以下の桁数によっても考慮が必要に思われます。 どうかアドバイスをお願い致します。
- rubyに関する質問です。
rubyに関する質問です。 require 'open-uri' open("uri") do |f| 5.times do print f.gets end end これを実行すると <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>繧ェ繝悶ず繧ァ繧ッ繝域欠蜷代せ繧ッ繝ェ繝励ヨ險?隱・Ruby</title> Complete(0) このように日本語のところだけ文字化けしてしまうのですが、どのようにすれば文字化けがなおるのでしょうか?
- Ruby1.9での文字列操作について。
Ruby1.9での文字列操作について。 今までRuby1.8を使用していましたが、Ruby1.9に変えてから、次の4種類の問題が出てきました。 (※Ruby1.9に変えてから、#encoding: shift_jisを定義しております) どれか1種類でも結構ですので、Ruby1.9での対策、代替の処理について教えてください。 <問題1> ■文字列を指定のバイト位置まで削除する □現在(Ruby1.8)のコード moji = "1あアあアイ234565789" moji[4,14] = "" →1.8では、"1あア"となりますが、1.9では、"1あアあ"となります。 <問題2> ■文字列の中から指定文字が見つかったバイト位置の算出 □現在(Ruby1.8)のコード n = "あいうえお".index("う") →1.8では、n=4となりますが、1.9では、n=2となります。 <問題3> ■指定した年月日の存在チェック □現在(Ruby1.8)のコード y = 1900 m = 3 d = 10 if Date.exist?(y,m,d) p "test# end →1.8では、trueとなりますが、1.9では実行時にNoMethoodErrorとなります。 <問題4> ■半角英数字→全角英数字変換 □現在(Ruby1.8)のコード sss = moji.tr('a-zA-Z0-9', 'a-zA-Z0-9') →1.9では実行時にエラーメッセージが出力されます(略) 色々と書きましたが、どうかお助けください。
- Ruby言語のアルゴリズムを教えてください。
Ruby言語のアルゴリズムを教えてください。 (例) "1あいアう234565789" 上記のような半角、全角文字が混在した文字列において、例えば3文字目の「い」から2文字分を 切り出したいのですが(→"いア")、私の知識ではどうにも出来ません。 つまり、「3文字目」、「2文字分切り出す」という条件で、 任意の文字列を操作するというものです。 どうぞ、良い知恵をお願いいたします。
- Ruby言語にて、全角カナ⇔半角カナ変換がうまくいかずで困っております
Ruby言語にて、全角カナ⇔半角カナ変換がうまくいかずで困っております。 以下のようにプログラミングをしてます。 結果が、思った通りではないのですが、何が原因でしょうか。 ※★→←★部分で囲んだ部分は半角文字です(ブラウザ上、半角文字が全角に変換されているようなので、 適宜そのような表記を入れました。 ●半角→全角変換 sss = "★→アイウエオ←★".tr('★→ア-ン←★', 'ア-ン') p sss ⇒★→アウオキケ←★ ●全角→半角 sss = "アイウエオ".tr('ア-ン', '★→ア-ン←★') p sss ⇒ア★→イ←★イ★→ウ←★ウ どうか原因を教えてください。
- Ruby on Railsでデータベースに接続できない。
Ruby on Railsでデータベースに接続できない。 『RailsによるアジャイルWebアプリケーション開発(第3版)』 http://www.amazon.co.jp/Rails%E3%81%AB%E3%82%88%E3%82%8B%E3%82%A2%E3%82%B8%E3%83%A3%E3%82%A4%E3%83%ABWeb%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E9%96%8B%E7%99%BA-Sam-Ruby/dp/4274067858/ref=sr_1_1?ie=UTF8&s=books&qid=1279209371&sr=8-1 という本でRuby on Railsの勉強をしています。現在、「第10章チェックアウト」の136ページあたりで行き詰っています。 ActiveRecord::AssociationTypeMismatch in StoreController#save_orderのメッセージが表示されていますが、どうやらデータベースに接続できていないようです。 configのdatabase.yml等を色々試行錯誤してみたり、色々ググってみたりしましたが、解決できませんでした。 どうやったらデータベースに接続できるのでしょうか。恐らくInstantRails-2.0に予め入っているMySQLやApacheと別々に入れたMySQLやApacheと競合しているからでしょうか。InstantRails-2.0の入っているMySQLやApacheは停止しています。 また、別々に入れたMySQLの方にはマイグレーション(?)で問題なくデータベースやテーブルが作成されています。なのにデータベースに接続できていないようです。 もう一つ、Ruby on Railsについて文字コードはcontrollers,helpers,models,views等に入っているファイルは全てutf-8にしなければならないでしょうか。何かWindowsでRuby on railsを開発するとコマンドプロンプトの関係でShift-JISに依存しているような気がします。
- ベストアンサー
- Ruby
- noname#139165
- 回答数1
- Ruby言語初心者です。どうぞ宜しくお願いします。
Ruby言語初心者です。どうぞ宜しくお願いします。 全角英大文字⇔全角英小文字に変換するロジックを考えていますが、 どうしてもうまくいきませんので教えてください。 upcase、downcaseでは出来ないようなので、他の方法でないと無理のようです。 宜しくお願い致します。
- エラー文の意味
エラー文の意味 ご質問させていただきます。 Macからターミナルを使ってRubyを動かしているのですが、変数を含んだファイルを実行しようとすると、エラーが出てしまいます。 例えば、 a = 3 print "私はリンゴを", a, "個持っています。" というファイルをapple.rbという名前で保存し、ターミナルから ruby apple.rb で実行すると、以下のようなエラー文が出ます。 apple.rb:1: syntax error, unexpected tIDENTIFIER, expecting $end このエラーはどういう意味なのでしょうか? よろしくお願いします。
- 締切済み
- Ruby
- mizuto3210
- 回答数1
- selectの意味
selectの意味 リファレンスマニュアルと本のselectの説明がわかりません。 説明の文はなんとかわかるのですが、引数のとり方が「reads[, writes[, excepts[, timeout]]]」となっていて、これは 3 要素の配列を返しているように見えないので、混乱します。「reads[, writes[], excepts[], timeout[]」という書き方なら3 要素の配列を返していると納得できるのですが、ここで返しているのはreadsの中にwritesがあり、更にその中にtimeoutがある配列を返しているんでしょうか? 手元の本に「selectはリクエストを受信すると、リクエストを検出したソケットだけをリストに返します。」とあるのですが、ここで言うソケットとは入力、出力、例外を指していて、リストというのはつまり配列のことなんでしょうか?