Rubyの宿題教えてください。2限目at TECH
Rubyの宿題教えてください。2限目 - 暇つぶし2ch831:デフォルトの名無しさん
10/03/01 07:14:09
> にはなったのですが、ずっと動かしてるとStackErrorとなってしまいます。

繰り返しが再帰になってるんじゃない?

832:デフォルトの名無しさん
10/03/01 07:24:50
ぱっと見ではbodyのあたりがなんか怖い

833:デフォルトの名無しさん
10/03/01 10:33:35
宿題でもないのに宿題スレにくるアホなんなの

834: ◆1zwh/1JASc
10/03/01 19:19:37
>>831
どのあたりでしょうか?
body.callのあたりでしょうか?(ここいまいち分かってないので)
>>832
上の方と同じくですが
result = body ? body.call(data) : data.length
この辺でしょうか?
>>833
向こうでこっち紹介されたようなので来てみたんですが・・・

gistと言うところで、コード再掲してみました。
インデントとかコッチの方が見やすそうなので。
URLリンク(gist.github.com)

835:デフォルトの名無しさん
10/03/02 22:09:56
>>834
試してないけど $VERBOSE = nil 以降はこんな感じだと思う
StackErrorになる理由はリファレンスマニュアルでも読んで自分で調べてくれ
data = ""
c.on_body {|d| data << d ; d.size }
c.perform
s = JSON.parse(data)
user = s['user']
if user && user['lang'].include?('ja')
links = s['text'].scan(/(https?:\/\/[-_.~a-zA-Z0-9;\/?:\@&=+\$,%#]+)/).flatten
links.each {|link| p "url => #{link}" }
end

場所としてはこっちのスレの方がいいので、解決しないなら移動して
Ruby 初心者スレッド Part 34
スレリンク(tech板)

836: ◆1zwh/1JASc
10/03/02 22:51:20
>>835
ありがとうございました。
そのロジックだと、データ受信中の解析が出来無いと思うのですが・・・
#StreamAPIなので、データ受信完了が無いのです。

ともあれ、初心者スレに行ってみます。


837:デフォルトの名無しさん
10/03/03 02:20:05
リファレンスマニュアル URLリンク(www.ruby-lang.org) を見ながら自力でがんばってみたが、できなかったので教えてください。

題:ファイルを一行ずつ読み込んでリンクを取り出す。

自力で作った分
1: #!/usr/bin/ruby
2: board_plist = "~/board.plist"
3: if test(?e, board_plist) {
4: site_list = []
5: File.open(board_plist, 'r') {|f|
6: f.each {|buf|
7: if buf.sub!(/¥s*<string>http:¥/¥/(.+?)¥/.+?¥/<¥/string>/, '¥1') {
8: site_list << buf.chop
9: }
10: }
11: }
12: }
実行してみた結果
./dame.rb:10: parse error

素質無さ過ぎなので、プログラマに成る夢は諦めますw

838:デフォルトの名無しさん
10/03/03 03:02:27
>>837
文法間違い
× if 条件 { 処理 }
○ if 条件 [then] 処理 end

リファレンスマニュアルの Rubyの文法>制御構造>条件分岐>if を参照

839:デフォルトの名無しさん
10/03/03 03:22:52
>>837
Rubyのifは
1. if 式 then 式 [elsif 式 then 式]* [else 式] end
2. then は `;' or 改行 で代用可
だよ


840:デフォルトの名無しさん
10/03/03 03:44:04
無事に動きましたありがとうございます。
{}でくくる制御とくくらない制御が混在するのは盲点でした。orz

どうやら他の宿題も盛大にバグってて、parse errorでしたw

841:デフォルトの名無しさん
10/03/04 14:52:01
ソースの可読性を高める為
括弧をくくらなくても動くように作っただけで
全部くくろうと思えばくくれるぞ

842:デフォルトの名無しさん
10/03/05 01:37:01
括弧をなくした理由は読みやすさじゃなくて
書きやすさを追求したからだよ

括弧ある方が可読性高まる


843:デフォルトの名無しさん
10/03/05 07:32:04
Rubyの {} (または do end)は、それでくくった手続きのかたまりが、ほかのメソッドの中から
(繰り返し)呼ばれる、というちょっと特殊なものだぞ。
これはくくってもくくらなくても、とかいうものではない。きちんと覚えないとダメ

844:デフォルトの名無しさん
10/03/05 14:15:50
基本的にはくくればいいんだが、くくっちゃダメな条件があったり、くくらない習慣(pとか)のあるメソッドがあったりといったところなのかな。

845:デフォルトの名無しさん
10/03/05 14:21:27
()の話と{}の話が混ざっている予感。


846:デフォルトの名無しさん
10/03/05 14:29:02
宿題スレで質問すんなよ…

847:デフォルトの名無しさん
10/03/05 15:07:41
x くくっちゃダメな条件
o くくるの省略しちゃダメな条件

848:デフォルトの名無しさん
10/03/06 02:34:35
結局ifは{}は使えずにdo-endでくくらないと駄目ってことなんだろ。

849:デフォルトの名無しさん
10/03/06 07:51:53
if は {} でも do-end でもないぞ

if-[then]-[else]-end だ

850:デフォルトの名無しさん
10/03/06 09:14:21
whileにdoを書いてもよいというのは、実は混乱の元ではないだろうか。


851:デフォルトの名無しさん
10/03/06 10:38:31
宿題スレで質問すんなよ…


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch