5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

Ruby初心者スレッドPart6

1 :980:2006/05/18(木) 11:09:57
プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。
関連スレやURLは2以降。Ruby on Railsの質問はWebProg板のRailsスレで。

■質問する人へ
質問する前に次の3つをすること。ここで回答を待つよりそのほうが早い。
 ・ぐぐる
 ・マニュアルで探す http://www.ruby-lang.org/ja/man/
 ・FAQを読む http://ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ
質問には以下を書くこと。へたくそな質問は再提出を要求される。
 ・詳しい内容(「動きません」「うまくできません」では回答しようがない)
 ・エラーメッセージ(なるべくそのままで)
 ・実行環境(OS名、Rubyのバージョン(ruby -v でわかる))
 ・最終的にやりたいこと(もっとよい方法がある場合が多いので)
回答してくれた人には「ありがとう」のひとことをいってあげて。

■回答する人へ
相手は初心者、根気よく育てるつもりで。質問がへたくそなのも大目にみてあげる。
それができないならこないこと(だって初心者スレだもん)。
 ・既出な質問やFAQは「XXXを読め」でいいので、叩かない&怖がらせない。
 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。


宗教的な話題は禁止します。


778 :デフォルトの名無しさん:2006/07/18(火) 05:42:04
長さの不揃いな「配列の配列」をtransposeしたいんですが
良い方法はないでしょうか?Rubyは1.8です

779 :デフォルトの名無しさん:2006/07/18(火) 08:09:50
ruby matrix transpose で検索したら、Matrixクラスというのがあるらしい。
ttp://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=Matrix
いちおうtransposeメソッドもあるみたい。
長さの不揃いな配列の配列を、Matrixオブジェクトに変換してみてはどうだろう。

780 :デフォルトの名無しさん:2006/07/18(火) 12:04:54
RubyでRSSリーダーを作ろうと思ってるんですが
そういうのを解説したサイトとかありませんか?

781 :デフォルトの名無しさん:2006/07/18(火) 12:09:23
>779
ありがとうございます。
ですがこれ、数値が前提みたいで……
扱いたいのは自作クラスのインスタンスなんです。

一応自分でこんなのを作ってみました。
でも、もう少しサラっと書けないかなぁと思います。

def trans_aryary(src)
 dst = []
 row = 0
 begin
  tmp = []
  found = nil
  src.each do |col|
   tmp.push col[row]
   found ||= col[row]
  end
  dst.push(tmp) if found
  row += 1
 end while found
 return dst
end

782 :デフォルトの名無しさん:2006/07/18(火) 12:26:11
>>780
そんなピンポイントな解説サイトなんてあってたまるかー
いや、あっても楽しそうな気もするが

せっかくの自作なら自力で作っていくのもいいんじゃね

RSSを読んでREXMLでパースするもやたら遅すぎるので正規表現で適当に区切って
1回目の表示はうまくいったけど未読と既読の管理の実装どうしようというとこで是非挫折してくれ(w

783 :デフォルトの名無しさん:2006/07/18(火) 13:02:33
え、巷のRSSリーダーって、ローカルにarticleを貯めないのか?

784 :デフォルトの名無しさん:2006/07/18(火) 13:33:01
「読んだ」記事とはなんぞや、というRSSリーダー特有の問題のことだろう

title一覧からクリックしてdescriptionを表示した記事だけを既読として扱うのかとか
titleとdescriptionをセットでずらずら一覧表示して全部既読ということにしてしまうのか

メーラーのような既読処理のほうが間違いはないが、数十数百の記事になるととてもとても

785 :デフォルトの名無しさん:2006/07/18(火) 13:35:37
それRSSリーダ特有の問題なの?

786 :780:2006/07/18(火) 13:41:38
>>780
確かに。でも他の言語ならあってもおかしくない気も・・・
挫折前提ですかw
とりあえずでいいから動くものを作りたいです
そっからカスタマイズでいいので・・・
未読既読は後でもいいかなとか

787 :780:2006/07/18(火) 13:45:03

アンカーミスだ・・・
>>782
です

788 :デフォルトの名無しさん:2006/07/18(火) 14:50:21
>>780
ttp://internet.kill.jp/wiki/index.php?%B5%BB%BD%D1%2FRuby%A4%C7RSS
「Ruby RSS」でぐぐっただけだから、内容までは知らん。


789 :デフォルトの名無しさん:2006/07/18(火) 16:24:29
railsの話ですが、ttp://wota.jp/ac/?date=20060525#p02 に認証プラグインが載っているのですが、
インストールして、コントローラーに
htpasswd :user=>"foo", :pass=>"bar"
と入れて実行してみると
undefined local variable or method `htpasswd_options' for #<BbsController:0x409d1014>
となって、エラーになってしまう。なんでだろ?知っている人おしえてください。

790 :デフォルトの名無しさん:2006/07/18(火) 18:41:01
>>789
http://pc8.2ch.net/test/read.cgi/php/1151254378/
Railsはこっち

791 :780:2006/07/18(火) 19:56:27
>>788
おーサンキューです。調べが足りなかったですね。
でも、ほんとに読み込むだけだな・・・
これをWebにするならRailsを使わないと駄目なわけか・・・

792 :780:2006/07/18(火) 19:58:01
そういえば、Rubyの日本語のIDEってありますか?
CとかのCpadみたいな・・・
探してるんですが、英語版しか無いんで・・・

793 :デフォルトの名無しさん:2006/07/18(火) 20:04:54
RDEで良いんじゃない?

794 :デフォルトの名無しさん:2006/07/18(火) 20:30:11
俺もRDEをオススメする。

795 :デフォルトの名無しさん:2006/07/18(火) 21:13:05
>>782
それなんて日記?

796 :デフォルトの名無しさん:2006/07/18(火) 21:17:21
中学生日記

797 :780:2006/07/18(火) 22:09:35
>>793,794
ありがとうございます。早速インストールしたのですが
日本語化の仕方が分からない・・・
TransrationFileってどこだー!

798 :デフォルトの名無しさん:2006/07/18(火) 23:03:19
>797
ttp://rubyde.sourceforge.net/hiki/ja/Initial%2BSetting.html

799 :780:2006/07/18(火) 23:30:43
>>798
できたよ〜。
何から何までありがと〜

800 :デフォルトの名無しさん:2006/07/19(水) 04:40:16
質問なんですが、
ttp://www.tea4miki.org/articles/2004/11/15
ここのサイトを見て、RubyでRSSを自動生成する物を作れると知って
このプログラムをうってみたのですが、
なぜかエラーが出ます・・・どうすればいいか分かる方いませんか?

801 :デフォルトの名無しさん:2006/07/19(水) 05:20:19
エスパーさん、出番です

802 :デフォルトの名無しさん:2006/07/19(水) 06:46:40
とりあえず打ち間違いを直しましょう

803 :デフォルトの名無しさん:2006/07/19(水) 07:12:08
何をして、どの様なエラーが出たかをちゃんと書かないと。
たぶん、「RSSを構築する」の部分ソースを動かしたのだと思うが。

Ruby をちゃんと普通に学習するなり、このサイトをベースにしてちゃんと学習するなりして、
本家行って RSS の仕様(英語)をちゃんと読んで、
両者を理解して上で自分で作らないと、むしろ茨の道な気がするが。
俺は自前で作ったことあるけど、あまり苦労しなかったし。

804 :デフォルトの名無しさん:2006/07/19(水) 08:26:12
>781
def transpose_nonsquarematrix(mtx)
max = mtx.map{ |array| array.size }.max
mtx.map{ |e| e.concat( Array.new(max - e.size, nil) ) }.transpose
end


805 :800:2006/07/19(水) 14:11:19
>>803
そうです。RSSを構築するの部分のソースを動かしたんですけど、
RDE使ってデバッグした所、
1行目と
rss=のところの行にエラーが出て何これ?って感じでした・・・
Rubyの本は注文したのですが、まだ届いてない状況。

自前で作るのが難しそうなので、こういったサイトを頼りにしてたのですが・・・

806 :デフォルトの名無しさん:2006/07/19(水) 15:08:54
とりあえずプログラム作ること自体初心者なのはわかった。
わかったからエラー内容をコピペ汁。


807 :800:2006/07/19(水) 15:16:18
>>806
C:/DOCUME~1/○○○/LOCALS~1/Temp/rb13.tmp:11:in `make': wrong number of arguments (2 for 1) (ArgumentError)
from C:/DOCUME~1/○○○/LOCALS~1/Temp/rb13.tmp:11
Completed(1)

実行するとこんなエラーが出ます・・・

808 :デフォルトの名無しさん:2006/07/19(水) 15:33:44
なにこれ

809 :デフォルトの名無しさん:2006/07/19(水) 15:53:29
>>807
11行目でmakeという関数を実行しようとしたが、(rb13.tmp:11: in `make')
引数の数が違っていますよ。(wrong number of arguments)
引数に1つだけ値を渡すべきところに2つ渡されていますよ。((2 for 1))

というエラーが出ているようだ。


810 :デフォルトの名無しさん:2006/07/19(水) 19:40:27
>>807
ttp://www.tea4miki.org/articles/2004/11/15 では
Ruby version 1.8.1を使っているが、>>807もそれにあわせている?
ruby -vの実行結果をコピペして欲しい。

ttp://www.cozmixng.org/~rwiki/?cmd=view;name=RSS+Parser%3A%3AReference.ja
ここを読むと最新版はRSS::Maker.makeの引数の数が変わっているので
エラーになるのだろう。


811 :デフォルトの名無しさん:2006/07/19(水) 20:20:15
it = Hoge.newするとit[0]やit[2]でデータが取り出せるクラスを作りたいんですがうまくいきません。
class Hoge
def initialize(str)
i = 0
strs = str.to_s.split(/\t/)
strs.each do |s|
self[i] = s
i = i + 1
end
end
def []=(x,y)
end
end
みたいに見よう見まねで書いてみたんですが[]=がうまくいかないです。
どうかヒントだけでも

812 :デフォルトの名無しさん:2006/07/19(水) 20:23:51
>>811
ではヒントをあげよう。

   見 よ う 見 ま ね で 書 く な

以上。
クラスの作り方とメソッドの作り方を勉強してからいじれ。

813 :デフォルトの名無しさん:2006/07/19(水) 20:28:52
見よう見まねは、プログラミングの基本

814 :デフォルトの名無しさん:2006/07/19(水) 20:30:30
>>810
1.8.2から1.8.3の境目って結構そーいうの多いよね


815 :デフォルトの名無しさん:2006/07/19(水) 20:34:25
>>813
「動かなくても文句言わない」が付随すると思うぞ

816 :デフォルトの名無しさん:2006/07/19(水) 20:40:02
class Hoge
def initialize(str)
@strs = str.to_s.split(/\t/)
end
def [](x)
return strs[x]
end
end

817 :デフォルトの名無しさん:2006/07/19(水) 20:46:33
initializeで処理を溜め込むのもどーかと思うけどね

818 :デフォルトの名無しさん:2006/07/19(水) 20:48:00
>>812
いやまあ確かにそうなんだけど
演算子の多重定義とか言ったってC++のoperator+とかみたいに
構造が見てれば分かるような記法じゃないみたいだし
せっかく買った入門書には変態的な例が一つだけ載っていてしかも
「このような真似はしないほうがいいでしょう」とか書いてあって
ちょっと相当参ってます。なにとぞ

819 :デフォルトの名無しさん:2006/07/19(水) 20:48:34
>>817
へ?何で?

820 :デフォルトの名無しさん:2006/07/19(水) 20:48:54
とか言ってるうちにレス来てましたか。
本当に申し訳ない。んでは

821 :デフォルトの名無しさん:2006/07/19(水) 21:07:37
>>816

return @strs[x]

だった

すまん

822 :デフォルトの名無しさん:2006/07/19(水) 22:18:59
>>819
あまり複雑な事をやらせて、そのうち例外処理とかまではいったら
目も当てられないだろう。

initializeはあくまでインスタンスを作成する為の処理だと思う。

823 :デフォルトの名無しさん:2006/07/19(水) 22:29:53
こんな奴がstartとかいうメソッド作るんだろうな、と思う

824 :デフォルトの名無しさん:2006/07/19(水) 22:47:07
class Hoge
def initialize(str)
@strs = str.to_s.split(/\t/)
end
def [](x)
return @strs[x]
end
def each
@strs.each {|s| yield s }
end
end

h = Hoge.new("aho\tbaka\thage")
h.each {|s| p s}

825 :800:2006/07/19(水) 22:53:25
>>810
わ、マジですか・・・
確かVerは1.8.4だと思います・・・
Verを1.8.1に変えて今一度やってみます。

826 :デフォルトの名無しさん:2006/07/19(水) 22:54:28
そんなやつがabortするプログラム組むんだろうな

827 :デフォルトの名無しさん:2006/07/19(水) 22:54:54
いやそのアプローチは正直どうかと
1.8.4用に書き換えようよ

828 :800:2006/07/19(水) 23:02:34
C:/DOCUME~1/Owner/LOCALS~1/Temp/rb398.tmp:3:in `require': No such file to load -- rss/1.0 (LoadError)
from C:/DOCUME~1/Owner/LOCALS~1/Temp/rb398.tmp:3
Completed(1)

1.8。1に変えました。
でも
C:/DOCUME~1/Owner/LOCALS~1/Temp/rb398.tmp:3:in `require': No such file to load -- rss/1.0 (LoadError)
from C:/DOCUME~1/Owner/LOCALS~1/Temp/rb398.tmp:3
Completed(1)

こんなエラーが・・・


829 :デフォルトの名無しさん:2006/07/19(水) 23:06:04
ほう。で?

830 :デフォルトの名無しさん:2006/07/19(水) 23:13:43
http://www.cozmixng.org/~rwiki/?cmd=view;name=RSS+Parser

831 :800:2006/07/19(水) 23:27:41
>>830
RSSパーサですよね?インストールしました。ですが、
C:/DOCUME~1/Owner/LOCALS~1/Temp/rb3A1.tmp:6:in `require': No such file to load -- uconv (LoadError)
from C:/DOCUME~1/Owner/LOCALS~1/Temp/rb3A1.tmp:6
Completed(1)

と出ます。uconvって何だ・・・
まだ何かインストールしないと駄目なんですかね?

832 :デフォルトの名無しさん:2006/07/19(水) 23:30:16
「こんなエラーが」とか思考停止すんなよ。英語なんだから読めよ。
そんなレベルじゃ、初心者スレでも相手にされないって。思考しない向上心も無い初心者なんてクソだ。
RDE の事情なんて知ったこっちゃないが、
恐らく、C:/DOCUME~1/Owner/LOCALS~1/Temp/rb398.tmp:3 がソースファイルなんだろ?
公式のマニュアルで require を知れ。わざわざクォートで括って強調してくれてるんだろ?
そうすれば、$LOAD_PATH 以下に foo.rb やら bar.so があるかどうか、自然と調べるだろうに。
$ ruby -e 'p $LOAD_PATH' とかやってみな。

833 :800:2006/07/19(水) 23:33:41
>>832
すみません・・・
831のエラーは、requireってCで言うインポートみたいなもんですよね?
で、インポートする為のファイルが読めないってエラーだと思うんですが・・・
で、tmpの6行目だからuconvつーものが読めないって事だと思うんですが違いますかね?


834 :800:2006/07/19(水) 23:35:51
検索したらUconvってモジュールがあるんですね。
いけるかどーか分かりませんがとりあえずインストしてみます。

835 :800:2006/07/19(水) 23:50:48
Uconvをインストしようとして色々調べたんですが
ruby extconf.rb
make
make install
と順番に入れると書いてあったのでそのようにしたのですが、
makeの所で、
’Make'は内部コマンドまたは外部コマンド・・・
と出てきて認識してくれません。
ruby exconf.rbでは、ちゃんとcreating makefileと出るんですが・・・
原因分かる方いませんか?

836 :デフォルトの名無しさん:2006/07/20(木) 00:02:17
>>835
ドザはこれだから。

837 :デフォルトの名無しさん:2006/07/20(木) 00:05:11
どういう環境なんだろ?
OS板でもどうぞ。

まずはRoRが前提としてる環境を理解したほうがいいよ。

838 :デフォルトの名無しさん:2006/07/20(木) 00:15:32
>>833
Cにインポートなんてものはない。

839 :800:2006/07/20(木) 00:22:40
>>833
ごめん。Javaだった・・・

makeがなぜかできねぇぇぇぇ・・・
どういう事だろ?環境変数のPATHはちゃんと通してるはずなんだけど・・・

840 :デフォルトの名無しさん:2006/07/20(木) 00:31:54
>>800
とりあえず、Ruby 以前の問題だから出直してきた方がいいよ。
初心者スレッドだからって、何聞いてもいいわけじゃない。

841 :デフォルトの名無しさん:2006/07/20(木) 00:35:10
教訓:「なぜかエラーが出る」という奴にろくなのはいない

842 :デフォルトの名無しさん:2006/07/20(木) 00:43:59
試されていると考えるんだ!

http://www.garbagecollect.jp/ruby/mswin32/ja/download/ext.html

843 :デフォルトの名無しさん:2006/07/20(木) 00:45:41
>>842
お前のような奴がスレを駄目にする
後に続く何百何千の人間が迷惑を被る

844 :デフォルトの名無しさん:2006/07/20(木) 00:50:19
まじで?

すまん。
実際そんなにいるのか知らんけど、
後につづく、何千もの人間の人、すまんかった。


845 :デフォルトの名無しさん:2006/07/20(木) 01:06:57
リンク張られちゃったサイトのアクセスログによると1日30人くらいはいると思う
1年で1000人くらいにはなるかと(w

846 :800:2006/07/20(木) 01:11:57
>>840
すみませんでした。皆様にはご迷惑おかけしました。
なんかRubyの本体を解凍した中&インストした中にmakeが無いのは如何に?って感じですが・・・
パチもん掴まされたのか、そういうものなのか・・・

何はともあれせめてまともに動くようになってからまた来ます。

847 :デフォルトの名無しさん:2006/07/20(木) 01:38:43
あ、回答が間違ってたの?
間違った回答に誘導される人にとって迷惑だと。

てっきり、「安易に回答する」ことに対して
>843に説教いただいたのかと
思ってました。

すみませんでした。

あと>846は、まともに動くようになったら、もう来なくていいと思った。

848 :デフォルトの名無しさん:2006/07/20(木) 02:25:07
>> 846

> なんかRubyの本体を解凍した中&インストした中にmakeが無いのは如何に?って感じですが・・・ 

おまえさん、makeってコマンドがどーゆーものか知らないのかえ?


849 :デフォルトの名無しさん:2006/07/20(木) 02:30:43
まぁ「初心者」だから……と思わんでもないが
さて「makeがないって言われます」なんてFAQ項目が必要なのかな?

# 正直言うと、ことこの板でそんなこと言ってるのは「マウスが机の端まで来てもう動かせません」
# って困ってるのと同レベルな気もしないでもない

850 :デフォルトの名無しさん:2006/07/20(木) 02:52:07
私は >>800 ではないのですが、

ruby 1.8.1 の環境で

rss 0.1.5
uconv 0.4.12
xmlparser 0.6.8
xmlscan 0.2.3

をなんとか入れてみましたが、
やはりエラーが出てしまいます。
( >>800 さんが指摘していたエラーも一通り出ましたが
上のいくつかをインストールしたら消えました )

/usr/lib/ruby/1.8/date/format.rb:228:in `dup': can't dup NilClass (TypeError)
from /usr/lib/ruby/1.8/date/format.rb:228:in `_parse'
from /usr/lib/ruby/1.8/parsedate.rb:9:in `parsedate'
from /usr/lib/ruby/1.8/time.rb:137:in `parse'
from ./makerss.rb:17


851 :デフォルトの名無しさん:2006/07/20(木) 02:54:17
なんか誤読してる人が多そうなんで一応いっとくけど、makeはメソッド名だからね。
>>807,809をよーく読むべし。

852 :851:2006/07/20(木) 02:57:04
って、俺が誤読してるじゃん、死ね、俺 orz

853 :デフォルトの名無しさん:2006/07/20(木) 04:16:33
なんつーかmakeを知らないというだけで
ここまで厳しくされるのを見てると、Windowsユーザーへの風当たりを感じる

Linuxユーザーは「make知ってて当然」みたいに考えてるのかもしれないが
WindowsでRuby動かす初心者がそんなもん知ってるわけ無いだろ
実際、俺はRuby初めてから3年目にコンパイルという概念を知った

854 :デフォルトの名無しさん:2006/07/20(木) 04:39:03
>853
俺ドザーだが「makeがない」言われたら
「make.exe」か「make.com」でググるぐらいするよ。

855 :デフォルトの名無しさん:2006/07/20(木) 04:41:17
>>853
Windowsユーザーだから、makeを知らないから、というよりは、
質問の仕方、自分で調べる姿勢、テンプレ読んでないという問題でしょう。

>>850
rssに付属してるサンプルも動かない?


856 :デフォルトの名無しさん:2006/07/20(木) 05:18:41
>>800 みたいな行動や、>>853 みたいな解釈をして生きていけたら、ある意味幸せだよな。

857 :デフォルトの名無しさん:2006/07/20(木) 05:50:21
たったこれだけのソースで time や date あたりでコケてるのが丸見えなんだから、すぐ修正できそうなものだが。
せっかく、スクリプト言語だったり Ruby なのに。
端から見てて、他人のソースで考えずに愚痴るくらいなら、自分で考えて1から書いた方が早そうだ。

ところで、なんでわざわざ非標準添付の uconv 使ってるんだろ?
そもそも、半角等を考慮すると nkf 一択だった記憶があるんだが。

858 :デフォルトの名無しさん:2006/07/20(木) 07:48:18
コンピューターリテラシー(プッ)の問題だと思う

プログラミング(メジャーでもない言語でしかも非GUIなスクリプト言語)を始める人というのは
なんつーかそれなりにパソコンに詳しい人であろうというのをあちこちで期待されてる節があって
そういう知識というか勘を持たないままプログラミングを始める人が増えてるのは喜ばしいやら寂しいやら

859 :デフォルトの名無しさん:2006/07/20(木) 07:52:26
「じゃあまずDOSプロンプト開いて下さい」
「どすぷろんぷとって何ですか?」
「…わかったよ悪かったよ2000からはコマンドプロンプトだよなどうせ俺は古い人間だよリターンキーだよ」
「こまんどぷろんぷとって何ですか?」
「皮肉じゃなくて普通に知らないのかよ…」

860 :デフォルトの名無しさん:2006/07/20(木) 08:39:41
面倒だから ruby 1.8.4 (2006-05-27) [i386-cygwin] で
動作確認したソースをコピペするよ。元のサンプルに出来るだけ合わせた。
あとは好きにして。

require "open-uri"
require "kconv"
require "rss/maker"

response = URI.parse("http://www.tea4miki.org/articles/2004/11/15").read
lastmodified = response.last_modified

rss = RSS::Maker.make("1.0") do |maker|
  maker.channel.about = "http://www.tea4miki.org/rss"
  maker.channel.title = "プログラマっ子の足跡"
  maker.channel.description = "藤本美貴様の指先を見つめるプログラマっ子のサイトです"
  maker.channel.link = "http://www.tea4miki.org/"

  maker.items.do_sort = true

  item = maker.items.new_item
  item.link = "http://www.tea4miki.org/articles/2004/11/15"
  item.title = "Rubyを使ってRSSを生成する"
  item.date = lastmodified
end

File.open("rss.txt", "w") do |file|
  file.puts(rss.to_s.toutf8)
end


861 :850:2006/07/20(木) 10:01:53
>>860 さんありがとうございます。

素人の私には何がなんやらさっぱり分かりませんが
そのコードで動作しました。 ( 当方 ruby 1.8.1 です )

本当にありがとうございました。


862 :デフォルトの名無しさん:2006/07/20(木) 10:24:38
ミキサマミキサマオシオキキボンヌ

863 :デフォルトの名無しさん:2006/07/20(木) 11:13:11
こういう出元不明のソースでもパクって客に納品すればぼったくれるのがプログラマという職業の魅力です。

864 :デフォルトの名無しさん:2006/07/20(木) 13:03:27
perlで言うとこの s/hoge/huga/e (eオプション)とか
elispで言うとこの query-replace-regexp-eval とかみたいに
置換後の文字列を評価して返す方法って、Rubyでどうするんでしたっけ?



865 :デフォルトの名無しさん:2006/07/20(木) 13:34:43
古いperlしかしらないので、e修飾子は知らないけど、
string.gsub(/regexp/) { eval($~[0]) }
っていうような感じで何とかなるのかな。

866 :デフォルトの名無しさん:2006/07/20(木) 14:01:47
s/hoge/huga/e って書くと、huga という文字列が実行されるんじゃなかったっけ。
つまり、string.sub(/hoge/, huga) でいいと思うんだが、違うか?

867 :デフォルトの名無しさん:2006/07/20(木) 14:44:54
関数を通過して###2の出力をbbbにしたいのですが、
Cみたくポインタとかあるのでしょうか?

def aaa( test )
test = "bbb"
end
st = "aaa"
p st ###1
aaa(st)
p st ###2

868 :デフォルトの名無しさん:2006/07/20(木) 15:08:41
aaa!

869 :デフォルトの名無しさん:2006/07/20(木) 15:13:45
Cみたいなポインタは無いよ。
testの指すものがStringなら
def aaa(test)
 test.replace('bbb')
end

870 :デフォルトの名無しさん:2006/07/20(木) 15:13:52
test.replace("bbb")

871 :デフォルトの名無しさん:2006/07/20(木) 15:38:20
ありがとうございました

872 :デフォルトの名無しさん:2006/07/20(木) 17:53:38
>>867=871
余談だけど、「引数の中身を書き換える」ってのはあんまりRuby的じゃないので、
可能なら他の方法をお勧めする


873 :デフォルトの名無しさん:2006/07/20(木) 18:22:30
gsub!

874 :デフォルトの名無しさん:2006/07/20(木) 23:45:41
A,1
B,2
C,3
みたいな列と行を記した入力が合って
 A B C
1○
2  ○
3    ○
というテキストの表を出力するとします。

1.列名の配列を作る
2.HashのHashをつくって、hash[行][列]="○"とする
3.列名の配列と、hash.keys を捜査して表を出力する
って泥臭い方法でコード書いてみたいんですが、
もっと、Ruby っぽいシンプルな書き方ありませんでしょうか?


875 :デフォルトの名無しさん:2006/07/21(金) 00:01:51
動作するならそれでもいいじゃん。

876 :デフォルトの名無しさん:2006/07/21(金) 00:09:17
>>874
トリッキーなコードを求めているのではないとすれば、無い。

877 :デフォルトの名無しさん:2006/07/21(金) 00:27:56
matrix mを作ってAを0にした[0,1],[1,2],[2,3]…[i,j]に対してm[i,j]=1とかにして入力を全部登録したあと
m.to_aで配列の配列に戻して配列ごとに1があったら○を出力

うまくいきそうにないな

878 :デフォルトの名無しさん:2006/07/21(金) 00:33:22
Rつかうといいかもな

256 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)