Ruby について Part 3
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001デフォルトの名無しさん
NGNGRuby Home Page
http://www.ruby-lang.org/ja/
<前スレ>
Rubyについて Part 2
http://pc3.2ch.net/test/read.cgi/tech/1028906179/
<過去スレ>
Rubyについて
http://pc3.2ch.net/test/read.cgi/tech/1012096319/
0809デフォルトの名無しさん
NGNG> hashにmapなんてのがあるんですね
> ここにあるHashのメソッドしか知りませんでした.
漏れもよくはまるんだけど、Array や Hash は Enumerable を include してるので、
そっちのメソッドもチェックしる。
0810デフォルトの名無しさん
NGNGそうね。Hashに限らず何を継承(include含む)してるか見ないとね。
おれの場合マニュアル見るときFileを見るべきかIOを見るべきか
迷うことがよくあるw
0811デフォルトの名無しさん
NGNGオブジェクトが持ってるメソッド全部を
列挙できなかったっけ?
まあ列挙しただけじゃ使い方はわからないから
結局リファレンスを見ないとダメか。
0812デフォルトの名無しさん
NGNGできるしそういうブラウザもある。
でもやっぱり Hash や Array の場合、Enumerable のメソッドもマニュアルに
書いておいたほうが親切だと思うなあ。
0814デフォルトの名無しさん
NGNG0815デフォルトの名無しさん
NGNG0816デフォルトの名無しさん
NGNG0817デフォルトの名無しさん
NGNG0818デフォルトの名無しさん
NGNG0819デフォルトの名無しさん
NGNG0820デフォルトの名無しさん
NGNG0821デフォルトの名無しさん
NGNG0822デフォルトの名無しさん
NGNG電卓代わりならPerlとどっちがいいかな?
俺Perlつかってるけど
0823デフォルトの名無しさん
NGNGの方が強力だよ。
0824デフォルトの名無しさん
NGNG0825デフォルトの名無しさん
NGNG0827デフォルトの名無しさん
NGNG電卓というにはちとオーバースペックな気もする
俺はちょっとした計算は
emacsの*scratch*バッファでelisp使ってます。
0828デフォルトの名無しさん
NGNG0829デフォルトの名無しさん
NGNG0830デフォルトの名無しさん
NGNG0831デフォルトの名無しさん
NGNG0832デフォルトの名無しさん
NGNG0833デフォルトの名無しさん
NGNG0834デフォルトの名無しさん
NGNG0835デフォルトの名無しさん
NGNGつまようじ最強
0837デフォルトの名無しさん
NGNG0838デフォルトの名無しさん
NGNG0839デフォルトの名無しさん
NGNGelispって、(/ 3 2)が1になっちゃうんですけど、
その程度でいいってこと?
0840デフォルトの名無しさん
NGNG0841デフォルトの名無しさん
NGNG0842デフォルトの名無しさん
NGNG0843デフォルトの名無しさん
NGNGrubyって 3/2 が1になっちゃうんですけど(ry
0844デフォルトの名無しさん
NGNG0845デフォルトの名無しさん
NGNG0846デフォルトの名無しさん
NGNG必要に応じて
require "mathn"
0847デフォルトの名無しさん
NGNG0848デフォルトの名無しさん
NGNG0849デフォルトの名無しさん
NGNGstarttime = Time.now.to_f
for i in 1..1000000;end
p [Time.now.to_f - starttime]
と、
def bench
starttime = Time.now.to_f
yield
p [Time.now.to_f - starttime]
end
bench {for i in 1..1000000;end}
では 1割くらい前者のほうが速いのですが、何故でしょう?
0850デフォルトの名無しさん
NGNG0851デフォルトの名無しさん
NGNGで、かなり差があるように見えるんだけど、何か勘違いしている?
0852849
NGNGfor i in 1..1000000;end
end
starttime = Time.now.to_f
forloop
p [Time.now.to_f - starttime]
だとさらに結果が違うよう。わけわからん。
0854デフォルトの名無しさん
NGNG後者はiがブロックローカル変数になるから。
0855デフォルトの名無しさん
NGNGだから、そんな面倒なことしてちゃ、今の時代生き残れないよってこと言いた
かったんよ。
rubyでcalc作ってる。自分用のoptionもたくさんあって、これ最強。
0856デフォルトの名無しさん
NGNG0857デフォルトの名無しさん
NGNGおまえは生き残れない
0858デフォルトの名無しさん
NGNGで、伊良部とrubyのつながりはどこにあるのだろうか?
わからない
0859デフォルトの名無しさん
NGNGではCに合わせてるとみてよろしいか
0861デフォルトの名無しさん
NGNGお金があるならmathematicaとかmatlabを使えばいいわけで。
分数計算で十分なら irb -m でもいいだろうが変数の入った式は扱えない。
0862デフォルトの名無しさん
NGNGXyzzyなら (/3 2) => 3/2 だよ。
有理数のまま計算していって、答えを出す手前で + 0.0 して実数に直すと
丸め誤差が少なくてイイ!
0863862
NGNG誤: Xyzzyなら (/3 2) => 3/2 だよ。
正: Xyzzyなら (/ 3 2) => 3/2 だよ。
0864デフォルトの名無しさん
NGNGなるほど。たしかにbench {...} の前に i=nil を入れると速度差は誤差の範囲になりました。
しかしブロックローカルの変数って何で遅いんだろ?
0865デフォルトの名無しさん
NGNGselect文で取得したレコードの、日本語の部分が化けてしまうのです。
原因・解決方法など教えてもらえませんか・・・?
0866865
NGNGテスト
\245\306\245\271\245\310
こんなかんじです。
0867デフォルトの名無しさん
NGNGpの多バイト文字の出力はそんな感じになる。
print/putsあたりを使えば?
0869デフォルトの名無しさん
NGNGあるいは$KCODEを指定しとく。
0870デフォルトの名無しさん
NGNGメソッドスコープのローカル変数は配列になってるのに対して、
ブロックローカルはIDとVALUEのlinked listになってるから、
それをたどる分だけ遅くなる。
0871デフォルトの名無しさん
NGNGやっぱり Ruby Hacking Guide を読まなきゃならんか。
0872デフォルトの名無しさん
NGNGあんたすげーよ。勉強になった。
0873デフォルトの名無しさん
NGNG使うことで簡単に定義できる。
では、クラスインスタンス変数へのaccessorはどうすればよい?
今は
class Foo
def self.v1=(v)
v1=v
end
def self.v1
@v1
end
end
とチマチマ定義している。
これをもっと簡単に定義したい。
0874デフォルトの名無しさん
NGNGclass Foo
class << self
attr_accessor :v1,:v2,:v3
end
end
0875デフォルトの名無しさん
NGNG次はRuby.netがVS.NETで使えるようにして欲しい。
0876デフォルトの名無しさん
NGNGごっつさんくす。
かなーりたすかった。
今度おごるよ。
0877デフォルトの名無しさん
NGNGこの書き方だとRubyスクリプトとしてはまったく問題ないけど、
RDocがうまく解釈してくれないね。惜しい。
(RDocのバージョン:RDoc Vbeta-2: 2002/07/22 21:07:31 (1.67))
0878874
NGNGclass Foo
class << self
# v1 - Foo's instance variable
attr_accessor :v1
end
# v1 - Foo's attribute
attr_accessor :v1
end
みたくコメントを工夫するしかなさそうだね。
0879デフォルトの名無しさん
NGNGあれー、それでうまくいった?
試したけど、どちらもインスタンス変数へのアクセッサと
してしか認識されなかったよ。
RDocのバージョンが古いのかな?
0880デフォルトの名無しさん
NGNG引数が Struct 使う場合にどうすればいいのかよくわからないんです。
0881デフォルトの名無しさん
NGNG配列をpackした文字列を渡す。
0882デフォルトの名無しさん
NGNG0883デフォルトの名無しさん
NGNGRite では直すのかな?
0884デフォルトの名無しさん
NGNGindex.rhtml:1:missing end delimiter (ERuby::CompileError)
こういうエラーがでてしまう。
何が悪いのだろうと調べて、キーワという文字列を抜くと動く。
日本語を含んだ文を書き出すには、なにか必要なのでしょうか。
0885デフォルトの名無しさん
NGNGrequire "kconv"
s = "ーワ".toeuc
d = ""
s.each_byte{|c| d << (c&0x7F)}
$KCODE = "n"
p s # "\241\274\245\357"
p d # "!<%o"
$KCODE を変えてみれば動くかも
0886デフォルトの名無しさん
NGNG引数の数だから、1 になるんじゃないかと思うんだけど、
なんで -1 になるのか誰か教えてー。
0887デフォルトの名無しさん
NGNGで、ブロック引数は多重代入と同じセマンティクスを持つので、
a = 1, 2, 3 # => a == [1,2,3]
と任意の個数の引数を取れるということ。
だったんだが、1.8.0 preview3ではそれは1になる模様。
0888デフォルトの名無しさん
NGNGRubyが採用された市販アプリって有るのか?
まぁ、PSPは米国製だからってのもあるんだろうが。
つか、Rubyを採用しようにも、簡単に組み込めるようなライブラリが
無いよな? Pythonにはそれが有るらしいが(伝聞)。
そのへんどうにゃのよ?
0889デフォルトの名無しさん
NGNG最近の俺的には、ネイティブスレッドに対応してないのでRubyは選べないけど。
0890886
NGNGわかりやすい説明どうもありがとう。
> で、ブロック引数は多重代入と同じセマンティクスを持つので、
はじめて知りますた。。。
なるほど納得です。
> だったんだが、1.8.0 preview3ではそれは1になる模様。
ふむ!こっちのほうが俺にはわかりやすいです。
ためになる情報ありがとうございました。
0891デフォルトの名無しさん
NGNG> だったんだが、1.8.0 preview3ではそれは1になる模様。
lambda{|x|}[] とか def f() yield end ; f{|x|} が出来なくなるということ?
0892デフォルトの名無しさん
NGNG> lambda{|x|}[] とか def f() yield end ; f{|x|} が出来なくなるということ?
できるけど、警告が出る。
$ ruby -ve 'lambda{|x|}[]'
ruby 1.8.0 (2003-06-21) [i686-linux]
-e:1: warning: multiple values for a block parameter (0 for 1)
任意個の引数を取るときには|*x|、一個だけなら|x,|と書けば、1.6以前でも問題ない。
ちょうど同じ話題が出てる
ttp://jarp.jin.gr.jp/diary/200306c.html#200306211
0893デフォルトの名無しさん
NGNGBecky!用のRuby pluginってのはある。
あとtalkではたびたびアプリケーションに組込むって話がでてるけど、
具体的な製品名は分からない。
0894デフォルトの名無しさん
NGNGできれば、Win版とUNIX版両方で。
0895デフォルトの名無しさん
NGNGttp://metaeditor.sourceforge.net/embed/
0896デフォルトの名無しさん
NGNGああ、それなら知ってるけど、どうしていまさら後方互換性をなくす方向に
動き出したんだろ。2.0への布石?
0897デフォルトの名無しさん
NGNG> 動き出したんだろ。2.0への布石?
そんなとこだと思うけど。
arityに関しては、たしかに分かりにくいという声が以前からあったし。
0898デフォルトの名無しさん
NGNG一時期の出版ラッシュのついでに出しておいてくれれば良かったのに。
0899デフォルトの名無しさん
NGNGCマガあたりに記事がなかったっけ?
Web上でも読めた気がする。
0900デフォルトの名無しさん
NGNG本じゃないが、erubyなんかはいい例にならないかな。
0901デフォルトの名無しさん
NGNG0902784
NGNG>ruby -ve "File.open '-'"
ruby 1.6.8 (2002-12-24) [i386-mingw32]
-e:1:in `open': No such file or directory - "-" (Errno::ENOENT)
from -e:1
0903デフォルトの名無しさん
NGNG0904デフォルトの名無しさん
NGNG0905デフォルトの名無しさん
NGNG具体的に質問します。
コマンドラインでファイル名が指定されたらそれを、
指定されなければ標準入力を開くって処理をしたいんです。
Perl だと
push(@ARGV, "-") if no @ARGV
foreach (my $file @ARGV) {
open(F, $file);
#ほげほげ
}
とかできて楽なんですけど、Rubyだとどう書くんですか。
ファイル単位で(ファイル名を意識して)処理したいんで、ARGFは却下です。
0906デフォルトの名無しさん
NGNGなんかいろいろ間違ってる・・・Perl久しぶりとはいえ・・・欝だ。
0907デフォルトの名無しさん
NGNGf = (file == '-' ? STDIN : open(file))
begin
# ほげほげ
ensure
f.close unless f == STDIN
end
end
0908デフォルトの名無しさん
NGNGif file == '-'
yield STDIN
else
open(file, &block)
end
end
ARGV.each do |file|
reading(file) do |f|
# ほげほげ
end
end
レス数が900を超えています。1000を超えると表示できなくなるよ。