Ruby 初心者スレッド Part 50
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2012/07/29(日) 14:26:28.92質問するときは、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/
0002デフォルトの名無しさん
2012/07/30(月) 00:31:10.11http://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
0003デフォルトの名無しさん
2012/07/30(月) 00:32:31.62・エディタ初めてならRubyスクリプトをを着色してくれる(できればオートインデントの)エディタ好きなの選べ
・いわゆるIDEはRubyの学習に際しては恐ろしくコスパが悪いのでRubyのためだけに新規導入するのはお勧めしない
Q.XXX を使ってるんですが Ruby も覚えたほうがいいんでしょうか?
A.好きにしろ
※RubyやRuby使いに対する不満や愚痴などは本スレやバトロワスレなどをご利用下さい
0004uy
2012/07/30(月) 05:26:01.45$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
# ↑はぁー?
0005デフォルトの名無しさん
2012/07/30(月) 15:05:07.22ハードウェアを考慮していない。
実は30年前のCと今のrubyでは今の方のrubyの方が早い。
0006デフォルトの名無しさん
2012/07/30(月) 19:39:24.360007デフォルトの名無しさん
2012/07/30(月) 19:40:42.790008デフォルトの名無しさん
2012/07/30(月) 20:01:00.74irb> [1,2,3].grep(1)
=> [1]
irb> %w[1 2 3].grep(/1/)
=> ["1"]
オイェァ
ただし、あんまし使い出がないメソッドであることは否定しない
中途半端に使うと肝心なとこで裏切られるので(自業自得だが)、ふつうにfindとか使うのおすすめ
0009デフォルトの名無しさん
2012/07/30(月) 20:03:35.50> はたらきたくないでござる
うっせーバカ
0010デフォルトの名無しさん
2012/07/30(月) 20:10:54.89せめてどうググればサンプルなどが出てくるか教えていただけませんか?
回数指定をする繰り返しでもなく、このような例が見つからずに途方に暮れています
0011デフォルトの名無しさん
2012/07/30(月) 20:11:57.07単純な<a>リンクのクリックでは動作しないかもしれない
サイトが固定なのなら、本文ページのURLを自力で作成するのが妥当
全部で何ページあるのかとかはそりゃ自分でHtML読んで調べろ
もし単純な<a>リンクであることがわかってるのなら、そりゃその続きを読むリンクがそのページにまだあるかどうかで最終ページの判定すればいいんじゃないの
次のページがないのに次のページのリンクが有効であることはまずない
0012デフォルトの名無しさん
2012/07/30(月) 20:13:58.04Rubyの基礎がまったくできていないために、なにもできない状態になっている
ライブラリを使うことは一旦諦めて、Rubyの基礎の勉強をするといい
0013デフォルトの名無しさん
2012/07/30(月) 20:47:59.36よくわかりました!ありがとうございます!
0014デフォルトの名無しさん
2012/07/30(月) 20:55:31.07初心者をなんかどうにかして助けてくれるような機能があることはないよ
0015デフォルトの名無しさん
2012/07/31(火) 15:14:22.36【五輪】 開会式、各国のなかで日本選手団だけが"謎の退場誘導"…猪瀬東京都副知事も関心寄せる
http://2ch-ranking.net/cache.php?thread=uni.2ch.net/newsplus/1343712277/&res=100
0016デフォルトの名無しさん
2012/07/31(火) 23:04:52.75おもしろくないすねー
0017デフォルトの名無しさん
2012/08/01(水) 11:19:31.20要望を適切に「分解」するのは人力で、それをやるために必要なのは基礎知識と経験だからねえ
今回で言うと「特定の語句があるまでURLの先を取得することを繰り返して本文を溜め込んで返すメソッド」みたいなものを求められても困る
…あっても面白そうな気はするが、デフォルトではたぶん年に1回くらいしか使えなさそうだ(自力で実装したほうが早い)
0018デフォルトの名無しさん
2012/08/02(木) 01:13:38.04モジュール内からトップレベルの定数が参照出来るのってなんでだっけ
http://doc.ruby-lang.org/ja/1.9.3/doc/spec=2fvariables.html#prio
・トップレベルの定数定義はネストの外側とはみなされない
・モジュールだからancestorsにObjectが含まれるわけでもない
0019デフォルトの名無しさん
2012/08/02(木) 02:18:49.44・ トップレベルに定義されたメソッドと定数は 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!"
0020デフォルトの名無しさん
2012/08/02(木) 02:22:36.55ありがと
0021デフォルトの名無しさん
2012/08/02(木) 02:26:19.13Moduleのインスタンスだってことを見落としてた
class Module < Object
def foo
# ここからObjectの定数が見える
end
end
0022デフォルトの名無しさん
2012/08/02(木) 02:30:21.51そっすなー
マジカルさ加減で言うとトップレベルがObjectに行くほうがマジカルなんだけど、そこはとりあえずスレ的には丸覚えで
0023デフォルトの名無しさん
2012/08/02(木) 05:54:50.91X = 0
def foo
X
end
end
module M; end
M.foo #=> 0
module M; X; end #=> NameError
あれ?
0024デフォルトの名無しさん
2012/08/02(木) 10:49:51.035番目 (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!"
これはそういう順番になるように作ってあるとしか言えない、でいいと思う
0025デフォルトの名無しさん
2012/08/02(木) 11:09:01.56class 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
0026デフォルトの名無しさん
2012/08/02(木) 12:04:38.92「例外的にそうなってます」でいいのか、それとも
「○○の範囲が見えて、その中にObjectも含まれています」みたいな説明が可能なのか
今の所こういう感じじゃないかと思ってるんだけど違うかな
module A; end とか class A; end の中では以下の順で探索
1 ネストを外側に向かって。ただしトップレベルは含まない
2 継承元に向かって探索(include したモジュールも継承扱い。つまりM.ancestors)
3 Objectから継承元に向かって探索(Object.ancestors。classの場合は2に含まれる)
>>18のページの記述は3が抜けてる?
0027デフォルトの名無しさん
2012/08/02(木) 12:07:05.39× M.ancestors
○ A.ancestors
0028デフォルトの名無しさん
2012/08/05(日) 00:45:43.21a = gets.chomp
while a != "BYE"
puts "what?"
a = gets.chomp
end
このプログラムをwhat?と聞き返されるたびにBYEと入力して、の繰り返しで三回目にそのループから抜けられるようにするにはどうすればよいでしょうか?
0029デフォルトの名無しさん
2012/08/05(日) 01:27:52.18カウンタをつける。
0030デフォルトの名無しさん
2012/08/05(日) 01:45:13.77そうならまずwhileループをbegin〜end while(ruby版do〜whileの構文)に書き換えてから全体を3.timesで囲むとか
0031デフォルトの名無しさん
2012/08/05(日) 02:27:28.02while n < 3
puts "what?"
a = gets.chomp
n += 1 if a == "BYE"
end
0032デフォルトの名無しさん
2012/08/05(日) 13:16:54.32アドバイスありがとうございます。改善してみました。
3.times{
a=gets.chomp
while a != "BYE"
puts "what?"
a=gets.chomp
end}
ただ、これだとBYEと入力したあとにwhat?と返してくれません。どうしたものでしょうか。
今のままだとBYEと入力しない限りはwhatと返す(BYEと返すとループから抜けてしまう)ようになっているので、
BYEと入力してもwhatと返すようにしたいです。それで三回連続でBYEと入力したときだけループから抜けるようにしたいのですが。
BYEと入力した回数をカウンタで数えるのでしょうか。調べてみてもよく分からなかったので教えていただけるとありがたいです。
0033デフォルトの名無しさん
2012/08/05(日) 13:53:50.19> 三回連続でBYEと入力したときだけループから抜けるようにしたいのですが
連続でないと駄目なの?
だったら>>30は忘れて。これは
BYE
HELLO
BYE
BYE
みたいな入力で抜けることだけを想定して書いてるから
基本的には>>31みたいな感じで、BYE以外が入力されたらカウンタをリセットすればいいんじゃないかな
0034uy
2012/08/05(日) 14:57:37.95loop.each_with_object ["","",""] do | _, c |
puts "what?"
a = gets.chomp
p a
c << a
c.shift
break if c.join == "BYE"*3
end
0035uy
2012/08/05(日) 15:22:44.83loop.each_with_object ["","",""] do | _, c |
↓
[["","",""]].cycle do | c |
0036デフォルトの名無しさん
2012/08/05(日) 18:02:50.690037デフォルトの名無しさん
2012/08/06(月) 00:13:49.90joinしてからの判別だと、BY EBY EBYE みたいな入力でも通ってしまう
0038デフォルトの名無しさん
2012/08/06(月) 00:33:56.67while n < 3
puts "what?"
gets.chomp == "BYE" ? n += 1 : n = 0
end
標準ライブラリだとプロンプトを引数にとるメソッドはないんだっけ?
read_input("what?:") みたいなの
0039デフォルトの名無しさん
2012/08/06(月) 00:48:34.92変化を加えてみました。
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だけ表示されるようにしたいのですが、どうすればよいでしょうか?
0040デフォルトの名無しさん
2012/08/06(月) 04:03:01.22わかんないなら先進むのやめとけ
理解が先
わかんないのにさらに要素増やしてどうする
004139
2012/08/06(月) 09:07:04.31そうですね。たしかに基本的な用語くらいは理解するべきですよね。
私はこのサイト(http://www.ie.u-ryukyu.ac.jp/~kono/software/s04/tutorial/Chapter=Contents.html)
を見ていろいろなプログラムを書いてみることが上達への近道だと思ってやってるんですが、
1週間前に初めてプログラミング言語に触った初心者なのでよかったらよい勉強方法を教えていただけませんか?
0042デフォルトの名無しさん
2012/08/06(月) 09:12:50.59他人に聞いてそのまま書くのは最初の時点では練習にならない
(クラスやメソッドをあらかた知ってる状態では写経も意味があるんだが)
自分で必要なものを考えて、それに必要な機能を自力で探して、それを必要なだけ自分で組み合わせて作れ
もし、プログラミングで作りたい・作らなければならないものが現時点でなにもないのなら、プログラミングのことはすっぱり忘れて他のことをしろ
プログラミングというものが「必要」となったときに、「っていうか自分で作ればいいのか」と思い出すだけで充分
0043デフォルトの名無しさん
2012/08/06(月) 09:16:53.000044uy
2012/08/06(月) 09:32:00.14puts "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."
0045デフォルトの名無しさん
2012/08/06(月) 18:52:17.57printf "_ %s" % [ 2 ]
こんな感じのをハッシュでやる方法ってありませんでしたか?
どこかでみたような気がしたんですが書き方を忘れてしまって
printf "_ %s" % { a: 4 }
0046uy
2012/08/06(月) 18:55:17.600047デフォルトの名無しさん
2012/08/06(月) 19:35:44.81それです
ありがとうございます
0048デフォルトの名無しさん
2012/08/06(月) 19:55:01.01puts "%{symbol}" % {:symbol => 'val'}
val
シンボルじゃないと動きません
0049デフォルトの名無しさん
2012/08/08(水) 09:00:24.68何か方法はありませんか?
def f
n = 0
class << n
end
end
f
0050デフォルトの名無しさん
2012/08/08(水) 09:15:22.65Fixnumオブジェクトは特異クラスを持てない
メソッド内で宣言すること自体は普通に出来る
0051デフォルトの名無しさん
2012/08/08(水) 09:19:29.58そうなんですね
気づきませんでしたありがとうございます
0052デフォルトの名無しさん
2012/08/08(水) 10:49:16.72こうやってるんですが、もっと簡単な書き方ありますか?
lines = open(filename) {|f|
f.readlines().map {|l| l.chomp}
}
getsとかeachとか使うにしてもchompは省略できないんですかね?
0053u
2012/08/08(水) 12:50:05.94p open($0).readlines.map(&:chomp)
p [*open($0)].map(&:chomp)
0054デフォルトの名無しさん
2012/08/08(水) 18:51:31.560055デフォルトの名無しさん
2012/08/08(水) 20:39:14.12個人的に関数等を吟味したつもりなのですが、結局できませんでした。バイナリだけみたら、自前のデータとほとんど同じように取得できているように一見見えるのですが・・・ すみませんアドバイスお願いします
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
0056デフォルトの名無しさん
2012/08/08(水) 20:45:48.59http://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のデータでウィンドウを作る
という流れで作っていたのですが・・・できませんでした
0057デフォルトの名無しさん
2012/08/08(水) 20:51:30.98まさか実行するたびに何百回もサーバにアクセスして画像を取得していたわけではあるまい
0058デフォルトの名無しさん
2012/08/08(水) 22:06:46.10まあ、rubyってそういうものですしね。参考になりました。ありがとうございました
0059デフォルトの名無しさん
2012/08/08(水) 22:50:40.060060デフォルトの名無しさん
2012/08/08(水) 23:08:01.45socat 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 になってしまいます
0061デフォルトの名無しさん
2012/08/08(水) 23:23:51.390062デフォルトの名無しさん
2012/08/08(水) 23:24:39.900063デフォルトの名無しさん
2012/08/08(水) 23:28:53.290064デフォルトの名無しさん
2012/08/09(木) 09:47:35.72socatの動作の方がおかしいんじゃないかな
--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が出力される
0065デフォルトの名無しさん
2012/08/09(木) 21:07:05.14perl が error をはかないので勘違いしてました。
単独動作で error をはくだけで、socat の引数で
ruby script を与えれば動いていました。
socat 側でdescriptor 作って、 ruby の script を
call しているから、ruby 側は既に存在している fd を
割り当てるだけでよかったんですね。
コメントいただいた方々ありがとうございました。
0066デフォルトの名無しさん
2012/08/10(金) 01:01:20.23このクラスの上手な使い方が思いつきません(ずっとclassを使ってやってたので)
使用例の参考になるコードなどありますでしょうか?
0067デフォルトの名無しさん
2012/08/10(金) 01:19:39.23initializeと読み書きアクセサしかないようなクラスを作るイメージ。
LogEntry = Struct.new(:issuer, :severity, :timestamp, :message)
定型的なアクセサの生成をStructに任せ、返ってきた
無名クラスを継承して振るまい(メソッド)だけ追加する例。
class Location < Struct.new(:latitude, :longitude, :altitude)
def country
end
end
0068デフォルトの名無しさん
2012/08/10(金) 05:58:40.93initialize とアクセサメソッドが欲しいのならアクセサメソッドだけ定義しろ
class Location
attr_accessor :latitude :longitude :altitude
def country
end
end
使い道が思いつかない、または、他の手段で代替可能なのなら、絶対に使うべきではないクラス
0069デフォルトの名無しさん
2012/08/10(金) 06:09:36.160070uy
2012/08/10(金) 09:08:21.98はっああああああ??
それやると、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
0071uy
2012/08/10(金) 09:14:46.22p 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
0072デフォルトの名無しさん
2012/08/10(金) 10:41:35.510073デフォルトの名無しさん
2012/08/10(金) 11:04:18.15基本classでいいよ
0074デフォルトの名無しさん
2012/08/10(金) 11:27:59.16最初からがっつり仕様が固まってるプロジェクトでおもむろに使うデータ構造だと思う
0075デフォルトの名無しさん
2012/08/11(土) 00:16:01.74こうなると利用シーンがよく分からないね
0076デフォルトの名無しさん
2012/08/11(土) 00:38:57.51「Hashのようなもの」を自前で実装した場合は、Hashそのものよりも格段に遅い
Hashに移譲したとしても、移譲自体が遅いのでやっぱり遅い
0077デフォルトの名無しさん
2012/08/11(土) 00:48:10.350078uy
2012/08/12(日) 20:50:51.52オブジェクトに追加した特異メソッドの削除を行いたいと思ったんですけど
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"
0079デフォルトの名無しさん
2012/08/12(日) 22:15:15.79a = 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
0081デフォルトの名無しさん
2012/08/14(火) 14:19:55.08以下で与えられるフィボナッチ数anを、入力したnに対して計算して表示するプログラムをtext.rbで保存して実行してください.
A₀=1,a₁=1,an=an−1+an−₂
0082デフォルトの名無しさん
2012/08/14(火) 14:33:36.43よっしゃ実行した次はなにすればいい? って返せ
0083デフォルトの名無しさん
2012/08/14(火) 14:35:31.13?
0084デフォルトの名無しさん
2012/08/16(木) 02:34:12.27うまく動いていたプログラムの中身をまるまるコピー
→新規作成でまるまる貼り付け
→名前を付けて保存
とやったらエラーが出るようになりました
調べたら改行の文字コードの問題っぽい気がするのですがどうやって直せば良いのでしょうか
RDE使ってます
0085デフォルトの名無しさん
2012/08/16(木) 02:47:51.68全然ちがうところ間違えてました
スルーしてください
0086デフォルトの名無しさん
2012/08/17(金) 23:09:56.09当方、macrubyにてプログラムをくんでいますが、
どうやったら終了時に実行されるメソッドを記述できるのかわかりません。
起動時に<def applicationDidFinishLaunching(a_notification)〜>が実行されるように、
終了時にもなにか構文みたいなものがあると思うのですが、ご存知の方いらっしゃいますか?
<def applicationWillTerminate(notification)>とか
<def windowWillClose(notification)>とかを試してみましたが、ピクリとも動きません・・・
0087デフォルトの名無しさん
2012/08/18(土) 01:32:56.88新Mac板にも前はRubyスレあった気がしたんだが…今見たら見付からないな
Googleで「applicationDidFinishLaunching site:developer.apple.com」でググったら
それっぽい資料がいくつかヒットするけど、どれかに無い?Terminateとか付いてるのあるからその辺りに
0088デフォルトの名無しさん
2012/08/18(土) 15:58:01.66レスありがとうございます! なんだかんだでできました!
def applicationWillTerminate(sender)で動きました!
もう一ヶ月くらい煮詰まっていたから嬉しい! 本当にありがとうございました!
0089デフォルトの名無しさん
2012/08/18(土) 18:30:47.12例えば全角チルダとか割り当ての無い文字があるとエラーになりますがその文字だけを無視するにはどうすればいいでしょうか?
0090デフォルトの名無しさん
2012/08/18(土) 19:54:06.14:undef => :replace, :replace => ''
0091デフォルトの名無しさん
2012/08/18(土) 20:32:28.42ありがとうございます
0092uY
2012/08/19(日) 06:50:09.11at_exit { } とか END { } 動かないの?
0093デフォルトの名無しさん
2012/08/19(日) 14:07:20.87xcodeでマックアプリを組んでいますが、残念ながら動かないです。
多少のobject-cの知識がないとmacrubyは厳しいです。
でも見た目のいいアプリがrubyで作れるのは最高です!
0094uY
2012/08/19(日) 17:02:01.770095uY
2012/08/19(日) 17:03:05.20Enumeratorを継承したクラスの使い方ってこれであってますか?
http://ideone.com/5m5qa
やりたいことは、
Enumerator.new内でまわしてるオブジェクトに外部から
>p y.cc.x
こんな感じにアクセスしたいって事なんですけど
なんかsuperって引数が暗黙的に渡される?っぽいじゃないですか
けどEnumerator.newのinitializeは引数が渡されるとブロックが評価されてない?ので
superとは別にEnumerator.newを呼び出してEnumを作ってます
一応動いてますけど、二重になってる気がして不安なんですけど
0096uY
2012/08/19(日) 21:22:10.76ブロックじゃなくて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]
0097uY ◆gXFLM6waxs
2012/08/20(月) 21:05:12.74: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)
こうなる事が分かりました
いらなくなったシンボルを削除する方法ってあるんでしょうか?
0098uy
2012/08/21(火) 04:28:14.40シンボルは大事に使っていくことにします
0099デフォルトの名無しさん
2012/08/21(火) 04:39:46.44このプログラム(main.rb)は、README.rbを読み込んで、出力するものです。
https://github.com/217/VMacs
このバグに2時間ほど悩んだのですが、どうにも解決できませんでした。
ライブラリの相性の問題なのでしょうか?
わかる方がいらっしゃったら、教えてください。
0100デフォルトの名無しさん
2012/08/21(火) 06:24:28.99Linuxでも確認。このケースでは、setposの後にrefresh呼び出しで解消できるけど、
cursesを使う時は、表示が乱れるので標準出力へのprintは避けた方が無難。
cursesの作法で色指定するといいよ。
0101デフォルトの名無しさん
2012/08/21(火) 07:30:26.12あれは「クラスに属する関数なら::で呼ぶのがオブジェクト指向言語の常識」という、
ローカル実装を普遍定義と勘違いした痛い面倒な人を飼い馴らすための時代遅れの機能
■ このスレッドは過去ログ倉庫に格納されています