1read 100read
2012年09月プログラム39: Ruby 初心者スレッド Part 50 (489) TOP カテ一覧 スレ一覧 2ch元 削除依頼
【糞.NET】裏切り者には死を【アンチゲイツ】 (337)
新言語を開発したい (290)
★初心者にVisual C++を教えるスレ★ Part38 (630)
C++11が動的言語よりも開発効率が良くなってる… (222)
【.cmd】 バッチファイルスクリプト %9 【.bat】 (300)
【モダン推奨】Perlについての質問箱 50箱目 (361)

Ruby 初心者スレッド Part 50


1 :2012/07/29 〜 最終レス :2012/11/02
プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。
質問するときは、OSやRubyのバージョン、エラーメッセージを書いたほうがいいお
RoRはスレ違いよ
前スレ
Ruby 初心者スレッド Part 49
http://toro.2ch.net/test/read.cgi/tech/1336507487/
るりまサーチ (リファレンス検索)
http://rurema.clear-code.com/
Rubyist Magazine - るびま
http://jp.rubyist.net/magazine/
逆引きRuby
http://www.namaraii.com/rubytips/

2 :
【RoR】Ruby on Rails Part15
http://kohada.2ch.net/test/read.cgi/php/1341589839/
【ActiveScript】RubyをWindowsで使うスレ【GUI】
http://toro.2ch.net/test/read.cgi/tech/1155031689/
書籍:ほぼ公式
「たのしいRuby 第3版 Rubyではじめる気軽なプログラミング」 (プログラミング自体が初めてでない人向け)
http://www.amazon.co.jp/dp/4797357401/
「初めてのRuby」 (同上)
http://www.amazon.co.jp/dp/4873113679/
書籍:紙のマニュアルに相当
「Rubyレシピブック 第3版 303の技」(脱初心者向け基礎テクニック集、1.9対応)
http://www.amazon.co.jp/dp/4797359986/
「プログラミングRuby 第2版 言語編」(初心者向け参考書)
http://www.amazon.co.jp/dp/4274066428/
現在、1.8 系列の最新である Ruby 1.8.7 と 1.9 系列の最新である Ruby 1.9.3 の2系統が存在。
肝心な部分がわりと違い、プログラムはそのままでは動作せず、予備知識も別個。
1.8 用のスクリプトやライブラリは 1.9.3 では動作しないので注意。
1.9.3 用の教科書があるなら 1.9.3 から始めても構わない。
Windows用Rubyは、Ruby以外のものもあらかた入っているActiveScriptRubyと
http://www.artonx.org/data/asr/
RubyだけインストールされるRubyInstallerの2種類存在。
http://rubyinstaller.org/downloads/
Rubyリファレンスマニュアル chm版リミックス
http://ruby.morphball.net/refm-remix.html

3 :
・いつものエディタとターミナルという普段着でお越し下さい
・エディタ初めてならRubyスクリプトをを着色してくれる(できればオートインデントの)エディタ好きなの選べ
・いわゆるIDEはRubyの学習に際しては恐ろしくコスパが悪いのでRubyのためだけに新規導入するのはお勧めしない
Q.XXX を使ってるんですが Ruby も覚えたほうがいいんでしょうか?
A.好きにしろ
※RubyやRuby使いに対する不満や愚痴などは本スレやバトロワスレなどをご利用下さい

4 :

$a = 6
puts "#{$a}" # => 6
puts "#$a" # => 6

$n = Struct.new(:x).new(4)
puts "#{$n.x}" # => 4
puts "#$n.x" # => #<struct x=4>.x
#             ↑はぁー?

5 :
Rubyが遅いというのはCと比べてとかの相対的な批判であって、
ハードウェアを考慮していない。
実は30年前のCと今のrubyでは今の方のrubyの方が早い。

6 :
Array#delete_if はあっても Array#grep が無いというのはFAQでしょうか?

7 :
前スレ最後のやつお願いします

8 :
>>6
irb> [1,2,3].grep(1)
=> [1]
irb> %w[1 2 3].grep(/1/)
=> ["1"]
オイェァ
ただし、あんまし使い出がないメソッドであることは否定しない
中途半端に使うと肝心なとこで裏切られるので(自業自得だが)、ふつうにfindとか使うのおすすめ

9 :
>>7
> はたらきたくないでござる
うっせーバカ

10 :
>>9
せめてどうググればサンプルなどが出てくるか教えていただけませんか?
回数指定をする繰り返しでもなく、このような例が見つからずに途方に暮れています

11 :
物凄く一般論としては、現在のread moreとかはJavaScriptやらCSSやらで実装されていることが非常に多い
単純な<a>リンクのクリックでは動作しないかもしれない
サイトが固定なのなら、本文ページのURLを自力で作成するのが妥当
全部で何ページあるのかとかはそりゃ自分でHtML読んで調べろ
もし単純な<a>リンクであることがわかってるのなら、そりゃその続きを読むリンクがそのページにまだあるかどうかで最終ページの判定すればいいんじゃないの
次のページがないのに次のページのリンクが有効であることはまずない

12 :
さらにもし、現時点でなにを言っているのかさっぱりわからないのなら、それはライブラリの問題ではなくRuby基礎の問題
Rubyの基礎がまったくできていないために、なにもできない状態になっている
ライブラリを使うことは一旦諦めて、Rubyの基礎の勉強をするといい

13 :
>>11
よくわかりました!ありがとうございます!

14 :
gemライブラリはRuby使い倒せるレベルが前提だからなあ
初心者をなんかどうにかして助けてくれるような機能があることはないよ

15 :
いま、Rubyに猪瀬知事が関心を持っている。
【五輪】 開会式、各国のなかで日本選手団だけが"謎の退場誘導"…猪瀬東京都副知事も関心寄せる
http://2ch-ranking.net/cache.php?thread=uni.2ch.net/newsplus/1343712277/&res=100

16 :
>>15
おもしろくないすねー

17 :
>>14
要望を適切に「分解」するのは人力で、それをやるために必要なのは基礎知識と経験だからねえ
今回で言うと「特定の語句があるまでURLの先を取得することを繰り返して本文を溜め込んで返すメソッド」みたいなものを求められても困る
…あっても面白そうな気はするが、デフォルトではたぶん年に1回くらいしか使えなさそうだ(自力で実装したほうが早い)

18 :
module M; Object; end #=> Object
モジュール内からトップレベルの定数が参照出来るのってなんでだっけ
http://doc.ruby-lang.org/ja/1.9.3/doc/spec=2fvariables.html#prio
・トップレベルの定数定義はネストの外側とはみなされない
・モジュールだからancestorsにObjectが含まれるわけでもない

19 :
疑問を整理
・ トップレベルに定義されたメソッドと定数は Object に所属することになっている(これはとりあえずそういうものだと理解する)
・ が、モジュール M に対する M.ancestors は [M] だけを返し、Object が含まれていないので Object が見えないはずでは?
てきとーな回答
irb> module M; end
irb> p M.class
Module
irb> p M.class.superclass
Object
superclass の定数がインスタンス内から読めるのは当たり前
…という説明で納得して頂けますでしょうか
たぶんもっとわかりやすくて本質的な説明をしてくれる勇者様がきっと
irb> class SUPERCLASS; end
irb> class CLASS < SUPERCLASS; end
irb> o = CLASS.new
irb> SUPERCLASS.const_set(:CONST,"superclass!")
irb> p o.class
CLASS
irb> p o.class.superclass
SUPERCLASS
irb> class << o; p CONST; end
"superclass!"

20 :
あRほどそういうことか
ありがと

21 :
ようするにこういう状態ですよね
Moduleのインスタンスだってことを見落としてた
class Module < Object
def foo
# ここからObjectの定数が見える
end
end

22 :
>>21
そっすなー
マジカルさ加減で言うとトップレベルがObjectに行くほうがマジカルなんだけど、そこはとりあえずスレ的には丸覚えで

23 :
class Module
X = 0
def foo
X
end
end
module M; end
M.foo #=> 0
module M; X; end #=> NameError
あれ?

24 :
>>18
5番目 (Object)
class ×; end
class 3番目 < ×
 class 2番目 < ×
  class C < 4番目
   include 1番目
   p CONST
  end
 end
end
まずinclude/extendを探し、次にスクリプト上のネストを探し、さらに継承元を探し、最後にObjectクラスを探してCONSTがなかったらエラー
class A1; CONST="A!"
class B1; CONST="B!"
class C1; CONST="C!"; end
class C < C1; p CONST; end
end; end #=> "B!"
class A2; CONST="A!"
class B2;
class C2; CONST="C!"; end
class C < C2; p CONST; end
end; end #=> "A!"
class A3;
class B3;
class C3; CONST="C!"; end
class C < C3; p CONST; end
end; end #=> "C!"
これはそういう順番になるように作ってあるとしか言えない、でいいと思う

25 :
>>23
class Module
X=0
end
module M
p self #=> M
# M=Module.new なので、C::CONST や C.new.class::CONST は読めても C.new::CONST が読めない理屈と同様、Module::X はここから読めない
end
class << M
p self #=> #<Class:M>
# Classの継承元には Module が含まれているのでふつうに読めるというか、回答でこれを出した>>19が間違ってるんだな
end

26 :
結局>>18の見える理由はなんなんだろう
「例外的にそうなってます」でいいのか、それとも
「○○の範囲が見えて、その中にObjectも含まれています」みたいな説明が可能なのか
今の所こういう感じじゃないかと思ってるんだけど違うかな
module A; end とか class A; end の中では以下の順で探索
1 ネストを外側に向かって。ただしトップレベルは含まない
2 継承元に向かって探索(include したモジュールも継承扱い。つまりM.ancestors)
3 Objectから継承元に向かって探索(Object.ancestors。classの場合は2に含まれる)
>>18のページの記述は3が抜けてる?

27 :
あ、書き直し漏れがあった
× M.ancestors
○ A.ancestors

28 :
質問よろしいでしょうか。
a = gets.chomp
while a != "BYE"
puts "what?"
a = gets.chomp
end
このプログラムをwhat?と聞き返されるたびにBYEと入力して、の繰り返しで三回目にそのループから抜けられるようにするにはどうすればよいでしょうか?

29 :
>>28
カウンタをつける。

30 :
what?と聞かれる前(つまり初回)に入力したBYEもカウントしていいんかな?
そうならまずwhileループをbegin〜end while(ruby版do〜whileの構文)に書き換えてから全体を3.timesで囲むとか

31 :
n = 0
while n < 3
  puts "what?"
  a = gets.chomp
  n += 1 if a == "BYE"
end

32 :
>>29>>30>>31
アドバイスありがとうございます。改善してみました。
3.times{
a=gets.chomp
while a != "BYE"
puts "what?"
a=gets.chomp
end}
ただ、これだとBYEと入力したあとにwhat?と返してくれません。どうしたものでしょうか。
今のままだとBYEと入力しない限りはwhatと返す(BYEと返すとループから抜けてしまう)ようになっているので、
BYEと入力してもwhatと返すようにしたいです。それで三回連続でBYEと入力したときだけループから抜けるようにしたいのですが。
BYEと入力した回数をカウンタで数えるのでしょうか。調べてみてもよく分からなかったので教えていただけるとありがたいです。

33 :
>>32
> 三回連続でBYEと入力したときだけループから抜けるようにしたいのですが
連続でないと駄目なの?
だったら>>30は忘れて。これは
BYE
HELLO
BYE
BYE
みたいな入力で抜けることだけを想定して書いてるから
基本的には>>31みたいな感じで、BYE以外が入力されたらカウンタをリセットすればいいんじゃないかな

34 :

loop.each_with_object ["","",""] do | _, c |
  puts "what?"
  a = gets.chomp
  p a
  c << a
  c.shift
  break if c.join == "BYE"*3
end

35 :
ミスった これcycleでいいや
loop.each_with_object ["","",""] do | _, c |

[["","",""]].cycle do | c |

36 :
馬鹿には無理

37 :
>>34
joinしてからの判別だと、BY EBY EBYE みたいな入力でも通ってしまう

38 :
n = 0
while n < 3
  puts "what?"
  gets.chomp == "BYE" ? n += 1 : n = 0
end
標準ライブラリだとプロンプトを引数にとるメソッドはないんだっけ?
read_input("what?:") みたいなの

39 :
いろいろ考えてくださってありがとうございます!知識がなくて皆さんの言っていることは全然わかりませんが・・勉強します。
変化を加えてみました。
puts "Say \'bye\' to that old woman."
n=0
while n<3
a=gets.chomp
n += 1 if a=="BYE"
puts "What? I can\'t hear your voice well."
end
puts "OK."
これだと三回目のBYEを入力したあとにWhat? I can\'t hear your voice well.と表示されてしまいます。
三回目のBYEの後はOKだけ表示されるようにしたいのですが、どうすればよいでしょうか?

40 :
>>39
わかんないなら先進むのやめとけ
理解が先
わかんないのにさらに要素増やしてどうする

41 :
>>40
そうですね。たしかに基本的な用語くらいは理解するべきですよね。
私はこのサイト(http://www.ie.u-ryukyu.ac.jp/~kono/software/s04/tutorial/Chapter=Contents.html)
を見ていろいろなプログラムを書いてみることが上達への近道だと思ってやってるんですが、
1週間前に初めてプログラミング言語に触った初心者なのでよかったらよい勉強方法を教えていただけませんか?

42 :
>>41
他人に聞いてそのまま書くのは最初の時点では練習にならない
(クラスやメソッドをあらかた知ってる状態では写経も意味があるんだが)
自分で必要なものを考えて、それに必要な機能を自力で探して、それを必要なだけ自分で組み合わせて作れ
もし、プログラミングで作りたい・作らなければならないものが現時点でなにもないのなら、プログラミングのことはすっぱり忘れて他のことをしろ
プログラミングというものが「必要」となったときに、「っていうか自分で作ればいいのか」と思い出すだけで充分

43 :
暇だからプログラミングを始める、というのがおそらく最悪のパターンだな

44 :
>>37
puts "Say \'bye\' to that old woman." 
[["","",""]].cycle do | c |
  print "what?"
  a = gets.chomp
  p a
  c << a
  c.shift
  c[0] == "BYE" and
  c[1] == "BYE" and
  c[2] == "BYE" and break
  puts "What? I can\'t hear your voice well." 
end
puts "OK." 

45 :
printfのフォーマットについて質問なんですが
printf "_ %s" % [ 2 ]
こんな感じのをハッシュでやる方法ってありませんでしたか?
どこかでみたような気がしたんですが書き方を忘れてしまって
printf "_ %s" % { a: 4 }

46 :
printf "_ %{a}" % { a: 4 }

47 :
>>46
それです
ありがとうございます

48 :
あれ、%{sym} ってマニュアルに書いてなかったっけ?
puts "%{symbol}" % {:symbol => 'val'}
val
シンボルじゃないと動きません

49 :
メソッド内で特異クラスの宣言をしたいんですけど、
何か方法はありませんか?
def f
  n = 0
  class << n
  end
end
f

50 :
>>49
Fixnumオブジェクトは特異クラスを持てない
メソッド内で宣言すること自体は普通に出来る

51 :
>>50
そうなんですね
気づきませんでしたありがとうございます

52 :
テキストファイルの全行を配列に読み込みたい(改行文字は削除)場合、
こうやってるんですが、もっと簡単な書き方ありますか?
lines = open(filename) {|f|
f.readlines().map {|l| l.chomp}
}
getsとかeachとか使うにしてもchompは省略できないんですかね?

53 :
p open($0).read.split("\n")
p open($0).readlines.map(&:chomp)
p [*open($0)].map(&:chomp)

54 :
IO.foreach(filename).map{|l| l.chomp}

55 :
今ネット上の画像のurl情報からgtk2を用いてそのurlの元の画像を表示するビューアのようなものを作っているのですが、なぜか画像の表示に失敗してしまいます。
個人的に関数等を吟味したつもりなのですが、結局できませんでした。バイナリだけみたら、自前のデータとほとんど同じように取得できているように一見見えるのですが・・・ すみませんアドバイスお願いします
require "gtk2"
require "open-uri"
NAME = "view"
WINDOW_SIZE = [500, 500]
class Win < Gtk::Window
def initialize
super(NAME)
self.set_default_size(*WINDOW_SIZE)

self.signal_connect("delete_event") do
Gtk.main_quit
end
self.signal_connect("key-press-event") do |w, e|
if e.keyval == Gdk::Keyval::GDK_q
Gtk.main_quit
end
end
end
end
url= 'http://www.astroarts.jp/news/2005/05/09hubble_anniversary/m51.jpg'
image = Gtk::Image.new(open(url,"rb").read)
main_win = Win.new
main_win.add(image)
main_win.show_all
Gtk.main


56 :
追記ですが、url元の画像が作業中消されてしまってたらしいので
http://upload.wikimedia.org/wikipedia/en/thumb/6/6a/Topimage_(2ch).png/250px-Topimage_(2ch).png
でお願いします。こちらの画像でも結果は同じでした
書き込み文字数が足りなくて不親切な質問になってしまったので、一応プログラムの流れを説明します
1、windowを準備(qか罰ボタンで画面を終了するようにする)
2、urlを読み込む
3、url元の画像データをバイナリデータで読み込み、Imageメソッドに渡す(imageにデータを格納する)
4、imageのデータでウィンドウを作る
という流れで作っていたのですが・・・できませんでした

57 :
とりあえず画像はローカルに保存して使え
まさか実行するたびに何百回もサーバにアクセスして画像を取得していたわけではあるまい

58 :
やはりそれしか手段はありませんか・・・
まあ、rubyってそういうものですしね。参考になりました。ありがとうございました

59 :
tmpdirとかに保存すりゃいい

60 :
外部プログラム socat との組み合わせで file descriptor を介して通信したいです。
socat EXEC:./te.rb,fdin=4,fdout=5 /dev/ttyS0 のように
perl では、
use IO::Handle; use IO::File
$fdr = IO::Handle->new()
$fdw = IO::Handle->new()
$fdw->fdopen(4, "w")
$fdr->fdopen(5, "r")
のように書くと実現できるですが、ruby の場合、IO::Handle->new() を実現するには
どうしたらよいでしょうか。いきなり IO.new(4, "w") とすると Bad file descriptor で
Error になってしまいます

61 :
使ったことないけど IO.for_fd ってのがあるようだ。

62 :
あ、IO.new が整数を第1引数に受け取った時の動作と一緒か。

63 :
perlでは未オープンのfdを構わず使用できてしまうのか。

64 :
socat知らないんでshでこんな事してみたけど普通にオープン出来るから
socatの動作の方がおかしいんじゃないかな
--hoge.rb
fd4 = IO.open(4)
fd5 = IO.open(5,'w')
fd5.puts(fd4.read)
--hofe.in
hello world
--shで実行
ruby hoge.rb 4<hoge.in 5>hoge.out #=> hoge.outにhello worldが出力される

65 :
>63, >64 を見て自分の勘違いにきづきました。
perl が error をはかないので勘違いしてました。
単独動作で error をはくだけで、socat の引数で
ruby script を与えれば動いていました。
socat 側でdescriptor 作って、 ruby の script を
call しているから、ruby 側は既に存在している fd を
割り当てるだけでよかったんですね。
コメントいただいた方々ありがとうございました。

66 :
今更RubyにStruct なんてのがあるのを知ったクチなのですが、
このクラスの上手な使い方が思いつきません(ずっとclassを使ってやってたので)
使用例の参考になるコードなどありますでしょうか?

67 :
複数のデータの組をまとめて扱いたい程度のときに便利。
initializeと読み書きアクセサしかないようなクラスを作るイメージ。
LogEntry = Struct.new(:issuer, :severity, :timestamp, :message)
定型的なアクセサの生成をStructに任せ、返ってきた
無名クラスを継承して振るまい(メソッド)だけ追加する例。
class Location < Struct.new(:latitude, :longitude, :altitude)
  def country
  end
end


68 :
>>67のように迂闊に使うとめんどくさいことになることは異論を待たない
initialize とアクセサメソッドが欲しいのならアクセサメソッドだけ定義しろ
class Location
attr_accessor :latitude :longitude :altitude
def country
end
end
使い道が思いつかない、または、他の手段で代替可能なのなら、絶対に使うべきではないクラス

69 :
説得力皆無です

70 :
>>67
はっああああああ??
それやると、selfからみれなくなるけどいいの????
複雑になるだけじゃないの??この動作知ってた?知ってた?ネェ知ってたー?WWW知らなかったのかな!!!!wwwwwっうひゃwwwっうぇwwwww
class Location < Struct.new(:latitude, :longitude, :altitude)
  attr_accessor :x
  def initialize
    @x = 6
  end
  def country
     self.latitude = 3
   p self.latitude # => 2
   p @latitude # => nil
   p self.x # => 6
   p @x # => 6
   
  end
end 
Location.new.country

71 :
すみません、値を間違えました
p self.latitude # => 2  は  p self.latitude # => 3 です

Structの活用は、メソッド内とかでちょっと構造体やらクラスっぽいのが必要になった時の
定義する時の文字数の違いとか、そのくらいだと思われる
def func
  a = Struct.new(:x,:y).new
  p a.x = 2
  a = Class.new { attr_accessor :x,:y }.new
  p a.x = 4
end
func


72 :
HashやClassだと、後から任意のものを突っ込めすぎて自由度が高すぎる、って時に使う感じ?

73 :
そんな感じじゃね
基本classでいいよ

74 :
Structは「Struct使って便利になった」と思うことよりも「やっぱStructにするんじゃなかった」と思うことのほうが多い
最初からがっつり仕様が固まってるプロジェクトでおもむろに使うデータ構造だと思う

75 :
あるベンチでは、RubyのStructはHashよりも遅いという結果が出てたけど、
こうなると利用シーンがよく分からないね

76 :
というか、Rubyのデータ構造の中ではHashが飛び抜けて速い(配列よりも速い)
「Hashのようなもの」を自前で実装した場合は、Hashそのものよりも格段に遅い
Hashに移譲したとしても、移譲自体が遅いのでやっぱり遅い

77 :
それはHash引数とかに使うからかなり頑張ったんじゃ・・・

78 :
質問です
オブジェクトに追加した特異メソッドの削除を行いたいと思ったんですけど
instance_eval→undefしか方法が見つかりませんでした、
remove_methodやundef_methodはないみたいなんですけど特異メソッドの削除の方法ってこれしかないですか?
a = Object.new
def a.f
  p 2
end
a.f
a.instance_eval do
  undef_method  :f rescue p "err0"
  remove_method :f rescue p "err1"
  undef :f
end
a.f rescue p "err2"

79 :
>>78
a = Object.new
def a.a ; p :a_a ; end
def a.b ; p :a_b ; end
a.a
a.b
class << a
remove_method :a
undef_method :b
end
a.a rescue p :no_a
a.b rescue p :no_b

80 :
>>79
見落としていました!!
ありがとうございます!

81 :
これわからないです誰かよろしくお願いします
以下で与えられるフィボナッチ数anを、入力したnに対して計算して表示するプログラムをtext.rbで保存して実行してください.
A₀=1,a₁=1,an=an−1+an−₂

82 :
>>81
よっしゃ実行した次はなにすればいい? って返せ

83 :
>>82


84 :
プログラムの一番最後の=endと書いた行でsyntax errorが出て困ってます
うまく動いていたプログラムの中身をまるまるコピー
→新規作成でまるまる貼り付け
→名前を付けて保存
とやったらエラーが出るようになりました
調べたら改行の文字コードの問題っぽい気がするのですがどうやって直せば良いのでしょうか
RDE使ってます

85 :
>>84
全然ちがうところ間違えてました
スルーしてください

86 :
macrubyの質問もこちらでいいのでしょうか?
当方、macrubyにてプログラムをくんでいますが、
どうやったら終了時に実行されるメソッドを記述できるのかわかりません。
起動時に<def applicationDidFinishLaunching(a_notification)〜>が実行されるように、
終了時にもなにか構文みたいなものがあると思うのですが、ご存知の方いらっしゃいますか?
<def applicationWillTerminate(notification)>とか
<def windowWillClose(notification)>とかを試してみましたが、ピクリとも動きません・・・


87 :
>>86
新Mac板にも前はRubyスレあった気がしたんだが…今見たら見付からないな
Googleで「applicationDidFinishLaunching site:developer.apple.com」でググったら
それっぽい資料がいくつかヒットするけど、どれかに無い?Terminateとか付いてるのあるからその辺りに

88 :
>>87
レスありがとうございます! なんだかんだでできました!
def applicationWillTerminate(sender)で動きました!
もう一ヶ月くらい煮詰まっていたから嬉しい! 本当にありがとうございました!

89 :
encodeでUTF8からSJISに変換するときに
例えば全角チルダとか割り当ての無い文字があるとエラーになりますがその文字だけを無視するにはどうすればいいでしょうか?

90 :
>>89
:undef => :replace, :replace => ''

91 :
>>90
ありがとうございます

92 :
macRubyって知らないんだけど
at_exit { } とか END { } 動かないの?

93 :
>>92
xcodeでマックアプリを組んでいますが、残念ながら動かないです。
多少のobject-cの知識がないとmacrubyは厳しいです。
でも見た目のいいアプリがrubyで作れるのは最高です!

94 :
左様か

95 :
質問なんですけど
Enumeratorを継承したクラスの使い方ってこれであってますか?
http://ideone.com/5m5qa
やりたいことは、
Enumerator.new内でまわしてるオブジェクトに外部から
>p y.cc.x
こんな感じにアクセスしたいって事なんですけど

なんかsuperって引数が暗黙的に渡される?っぽいじゃないですか
けどEnumerator.newのinitializeは引数が渡されるとブロックが評価されてない?ので
superとは別にEnumerator.newを呼び出してEnumを作ってます
一応動いてますけど、二重になってる気がして不安なんですけど

96 :
内部動作意味不明ですけど
ブロックじゃなくてlambdaで渡したらうごきましたもういいです
class B < Enumerator
  def initialize h
    a = super do|y| loop{ y.yield 1 } end
    p a.next # => 5
    a = super &(lambda do|y| loop{ y.yield 1 } end)
    p a.next # => 1
  end
end
B.new [5,6,7]

97 :
質問です
:aaaa
ってやると
p Symbol.all_symbols
ここに追加されますけど、
p Symbol.all_symbols.size
1_000_000_0.times do|i| :"#{i}" end
p Symbol.all_symbols.size
このくらい生成してやると
`intern': symbol table overflow (symbol 2095337) (RuntimeError)
こうなる事が分かりました
いらなくなったシンボルを削除する方法ってあるんでしょうか?

98 :
無理っぽいですね
シンボルは大事に使っていくことにします

99 :
Cursesと、Term::ANSIColor for Rubyを使って、コンソールでシンタックスハイライトができるテキストエディタを目指し作っているのですが、以下のリポジトリのmain.rbを実行すると、最初の文字「1」が黒字になるというバグが発生します。
このプログラム(main.rb)は、README.rbを読み込んで、出力するものです。
https://github.com/217/VMacs
このバグに2時間ほど悩んだのですが、どうにも解決できませんでした。
ライブラリの相性の問題なのでしょうか?
わかる方がいらっしゃったら、教えてください。

100read 1read
1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼
プログラム板 自治スレッド Part5 (782)
CLDC+MIDP+携帯電話用Javaスレッド part 9 (928)
datファイルを共有するP2Pソフト o2on 17dat (371)
なぜポインタで引っかかる人が多いのか (796)
Androidアプリ制作依頼スレ (618)
Embarcadero RAD Studio/Delphi/C++Builder その3 (323)
--log9.info------------------
MFC、Win32++を超えるライブラリを作るスレ (944)
【論理】Prolog【初心者】 (605)
だめです! HSP厨は絶対に犯罪です。 (946)
OpenGLスレ Part18 (925)
【QBASIC互換!?】FreeBasic【GPL】 (512)
monazilla Part 6 (623)
MVVMについて語ろう (384)
国産オープンソースDIコンテナSeasar2 その16 (497)
【モダン推奨】Perlについての質問箱 50箱目 (361)
【魔法】リリカル☆Lisp【言語】 (212)
iPhone iPad iOSプログラミング Part1 (541)
Ruby>>>>>Java (640)
【アンチ】関数型言語は使えない【玩具】 2 (407)
C#終了のお知らせ (942)
UNIXプログラミング質問すれ Part10 (535)
<XML総合 part="3"/> (756)
--log55.com------------------
【トリエンナーレ】東京大学教員有志が文化庁の補助金不交付決定に声明を発表。「脅迫行為に実質的に加担することにもなる」
大阪・ミナミのゲストハウスが悲鳴 韓国人客の激減で深刻な影響
ホンコン「香港問題と同時にウィグルとチベットの問題がある」「野党の人間も何をしとんねん!こんな時に言わなあかんのちゃうの?!」
元慰安婦「1日に4〜50人の相手をさせられた」「拒否すれば殺された」「安倍に謝罪を直接求める ネット「福島みずほプロデュース
【史上最悪のカルト内閣】安倍総理「8割の方が65歳を超えても働きたい意欲持ってる」→ネット「誰に聞いたんだ」「ふざけるな」
【アベノミクスの果実】 8月の景気指数、景気判断で最も悪い「悪化」 景気後退の可能性
【国会】大島衆院議長の発言に野党反発 衆院本会議の開会遅れる
左派政党が労働者から支持されなくなったワケ 安倍晋三の長期政権を裏付ける「格差の縮小」と「貧困率の低下」