Rubyについて Part47
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2012/01/16(月) 13:15:31.00質問するときは、OSやRubyのバージョン、エラーメッセージを書いたほうがいいお
前スレ
Ruby 初心者スレッド Part 46
http://hibari.2ch.net/test/read.cgi/tech/1317790320/
るりまサーチ (リファレンス検索)
http://rurema.clear-code.com/
Rubyist Magazine - るびま
http://jp.rubyist.net/magazine/
逆引きRuby
http://www.namaraii.com/rubytips/
0446デフォルトの名無しさん
2012/06/02(土) 13:54:30.740447デフォルトの名無しさん
2012/06/02(土) 14:01:46.15「予約」されているメソッド名が initialize という誰も使わなさそうな長ったらしいのになるようにわざわざしたんだよ
new でもよかったんだが、それだと new というインスタンスメソッドが def で定義できなくなってしまう
0448デフォルトの名無しさん
2012/06/02(土) 14:03:50.000449デフォルトの名無しさん
2012/06/02(土) 14:05:02.460450デフォルトの名無しさん
2012/06/02(土) 14:06:54.270451デフォルトの名無しさん
2012/06/02(土) 14:08:13.730452デフォルトの名無しさん
2012/06/02(土) 14:12:59.490453デフォルトの名無しさん
2012/06/02(土) 14:14:08.16initializeってみんな使いまくってるじゃん
みんな使いまくってるメソッドをわざわざ長くしてある意味がわかんねぇよ
という疑問
ってかinitとかnewみたいなインスタンスメソッドを定義するなんておかしいだろw
initなんてインスタンスの状態数が増えだけだし、newって何をnewするんだよw
0454デフォルトの名無しさん
2012/06/02(土) 14:16:00.550455デフォルトの名無しさん
2012/06/02(土) 14:22:18.02長いから分けるとか初心者みたいな発想じゃないか…
0456443
2012/06/02(土) 14:23:08.550457デフォルトの名無しさん
2012/06/02(土) 14:32:03.66自転車置き場の議論乙!
って言われたらそれまでだけど2ちゃんってそういう場所なんだよね?
twitterでmatzとかに聞いてもめんどくさそうにされそうだしなw
0458デフォルトの名無しさん
2012/06/02(土) 14:50:22.450459デフォルトの名無しさん
2012/06/02(土) 14:53:21.100460デフォルトの名無しさん
2012/06/02(土) 15:54:47.600461uy
2012/06/02(土) 16:04:12.88右 親指 n
右 人差し指 i
左 人差し指 t
右 人差し指 i
左 小指 a
右 中指 l
右 人差し指 i
左 小指 z
左 中指 e
それいったら
attr_accessorもヤバイ
でも別にそんな頻繁に使うものじゃないし別に。
initialize も attr_accessorもキータイプはしやすい単語だから別にいいわ後からこの辺り変えられるほうがきつい
0462デフォルトの名無しさん
2012/06/02(土) 16:09:30.22ΩΩΩ < な、なんだってー
0463デフォルトの名無しさん
2012/06/02(土) 16:11:45.210464デフォルトの名無しさん
2012/06/02(土) 16:42:28.99rw[TAB] → attr_accessor
0465デフォルトの名無しさん
2012/06/02(土) 17:13:03.96俺のキーボードと配列違うのかな
0466デフォルトの名無しさん
2012/06/02(土) 17:14:33.82qwertyだとiは中指だよな。
0467デフォルトの名無しさん
2012/06/02(土) 17:27:26.170468デフォルトの名無しさん
2012/06/02(土) 17:27:43.61右 人差し指 n
右 中指 i
左 人差し指 t
右 中指 i
左 小指 a
右 薬指 l
左 小指 z
左 中指 e
うちだとこうだな。
nを親指で押すって器用だね。
0469デフォルトの名無しさん
2012/06/02(土) 17:32:19.31右手の角度を傾けるとそんな感じの入力になりそうだ
0470デフォルトの名無しさん
2012/06/02(土) 17:36:58.85右手薬指だって
0471デフォルトの名無しさん
2012/06/02(土) 17:52:41.85いや、>>461が右手中指ですごいって話。右手親指nとあわせて考えた場合
右手を傾けるとなるほど>>461の配置でしっくりくる。
0472デフォルトの名無しさん
2012/06/02(土) 18:01:31.12記号類のキーが遠すぎて押せる気がしない。
0473デフォルトの名無しさん
2012/06/02(土) 18:28:13.480474デフォルトの名無しさん
2012/06/02(土) 18:29:43.530475デフォルトの名無しさん
2012/06/03(日) 01:36:56.280476デフォルトの名無しさん
2012/06/03(日) 06:36:40.600477デフォルトの名無しさん
2012/06/07(木) 12:55:31.35「お前らが仕様がない仕様がない言うから必死こいて仕様策定したんであって
これ以上やりたきゃ少しくらい手と金出せっていうか出してくださいお願いします」
という主張だということでいっすか
0478デフォルトの名無しさん
2012/06/10(日) 02:48:57.27それって効率悪くないの?
keyがSymbolだけの時だけは特別扱いして、実際にはHashオブジェクトを
アロケートしないような実装になってるとか?
0479デフォルトの名無しさん
2012/06/10(日) 03:23:52.10悪いです
>keyがSymbolだけの時だけは特別扱いして
ません
Ruby2.0では真のキーワード引数ができるはずの予定の目標なのでそれまで待って
見やすさ重視で処理二の次という、なんかActiveSupportとかRailsとかあのへんで醸成されたやつなんでもう仕方ない
0480デフォルトの名無しさん
2012/06/10(日) 03:35:56.430481デフォルトの名無しさん
2012/06/10(日) 03:51:28.06なんかテクニカル過ぎるというか、ドヤ顔が見えるというか
ライブラリいっこだけで使ってれば果てしなく浮くから、仕方ないんだけど
Railsあたりのライブラリでは「見渡す限りぜんぶキーワード風引数可能」というのを提供したんでプチパラダイム
0482デフォルトの名無しさん
2012/06/10(日) 06:33:08.320483デフォルトの名無しさん
2012/06/10(日) 07:33:20.800484デフォルトの名無しさん
2012/06/10(日) 08:41:49.70待ちきれないので Python 使ってみたら案外良かった
0485デフォルトの名無しさん
2012/06/10(日) 10:20:02.230486デフォルトの名無しさん
2012/06/10(日) 12:48:34.210487デフォルトの名無しさん
2012/06/10(日) 13:00:23.02そのメソッドを1秒に何百回呼ぶかというだけの話
0488uy
2012/06/10(日) 14:00:54.79def func hs
end
n = 1000000
Benchmark.bmbm do |x|
x.report(:sym) do
n.times do
func({ :test => "aaa"}) end
end
x.report(:hutuu) do
n.times do
func "aaa" end
end
end
Rehearsal -----------------------------------------
sym 2.578000 0.078000 2.656000 ( 2.656250)
hutuu 0.656000 0.000000 0.656000 ( 0.656250)
-------------------------------- total: 3.312000sec
user system total real
sym 2.625000 0.047000 2.672000 ( 2.671875)
hutuu 0.641000 0.000000 0.641000 ( 0.640625)
おせーじゃん
ちなみに引数を
func({ :test => "aaa" , :tete => "ruru" , :ssss => "rubyyy" , :bbb => "aauuu"}) end
にしたら
sym 5.734000 0.062000 5.796000 ( 5.875000)
0489デフォルトの名無しさん
2012/06/10(日) 14:57:30.180490デフォルトの名無しさん
2012/06/10(日) 15:47:56.810491デフォルトの名無しさん
2012/06/10(日) 15:50:27.89普通はfuncの中身がHash作るオーバーヘッドの何倍もあるから些細な違いだろ馬鹿か
0492デフォルトの名無しさん
2012/06/10(日) 16:05:28.190493デフォルトの名無しさん
2012/06/10(日) 16:09:05.580494デフォルトの名無しさん
2012/06/10(日) 17:19:05.210495デフォルトの名無しさん
2012/06/10(日) 17:50:49.41まあ基本、予算イズパワーでございまするがゆえ、ある程度まではお金注ぎ込んだぶんよくなるかとは思われます
すんごい広範で高額になった場合は費用対効果がうまく回らなくなるかもしれないけど、そんな夢みたいな心配する段階じゃないな
0496デフォルトの名無しさん
2012/06/10(日) 19:02:02.55小さな関数でかつ100万回の呼び出しを1秒以内に終えたい場合だけだろ馬鹿か
大体何だよその処理
ハッシュ作るより小さい処理をそんなに呼び出して何がしたいんだよ
0497デフォルトの名無しさん
2012/06/10(日) 19:15:25.050498デフォルトの名無しさん
2012/06/10(日) 19:18:11.870499デフォルトの名無しさん
2012/06/11(月) 02:02:59.38引数はkey, value固定で。
0500デフォルトの名無しさん
2012/06/11(月) 02:25:50.310501デフォルトの名無しさん
2012/06/11(月) 02:29:51.99C#なら使えるとわかったものはすぐに実装されていく
Rubyは遅い
0502デフォルトの名無しさん
2012/06/11(月) 04:13:58.100503デフォルトの名無しさん
2012/06/11(月) 11:55:53.63> 検索 約 2,080 件 (0.19 秒)
こんなのも知らないとか
0504デフォルトの名無しさん
2012/06/11(月) 11:57:44.69正規表現じゃダメなん?
>>503
小さいカレー屋とかが頑張って作ってみたメニューとかが表示されてせつないな
0505デフォルトの名無しさん
2012/06/11(月) 12:00:30.89すでにrakeにString#extが占拠されていたでござる
しかも仕様がウンコすぎる
0506デフォルトの名無しさん
2012/06/11(月) 12:13:10.63正規表現をどーしても使いたくないときに使う印象
あとCやC++な人とか
0507デフォルトの名無しさん
2012/06/11(月) 12:13:50.48それが入れば幸せになれるかもね
0508デフォルトの名無しさん
2012/06/11(月) 16:39:11.930509デフォルトの名無しさん
2012/06/11(月) 16:47:45.960510デフォルトの名無しさん
2012/06/11(月) 23:56:29.160511デフォルトの名無しさん
2012/06/12(火) 01:48:23.51RubyAuthenHandler あたりを使いたいんですが。。
0512デフォルトの名無しさん
2012/06/12(火) 03:17:17.10標準ライブラリのpathnameでは不満?
0513デフォルトの名無しさん
2012/06/12(火) 03:37:38.970514デフォルトの名無しさん
2012/06/12(火) 06:46:08.490515デフォルトの名無しさん
2012/06/12(火) 07:33:55.83{}の方がよほど見やすいのだが。
0516デフォルトの名無しさん
2012/06/12(火) 07:43:59.23どっちも慣れの問題だとは思うがね
0517デフォルトの名無しさん
2012/06/12(火) 07:55:49.64エンドという英単語として捉えてる人は(特に日本では)稀で、なんていうかこう、単なる模様にしか見えない
あと、Ruby における { } には
{key => value}
mes{|arg| block}
"#{embbed}"
と既に3つ仕事があるので、そういう点でもこれ以上増やすのはあんまりよくない
0518デフォルトの名無しさん
2012/06/12(火) 08:03:30.73生産性の低下をもたらした時点でendは失敗だったなw
0519デフォルトの名無しさん
2012/06/12(火) 08:04:49.600520デフォルトの名無しさん
2012/06/12(火) 08:17:10.63しかもbeginが無いのにendが有るから、余計に。
慣れの問題っていうけど、いまどきの言語がこぞって{}を採用しているからなぁ。
文法的に問題が無いのなら{}にも対応して欲しいな。
何か意地のような物があるのかもしれんが。
0521デフォルトの名無しさん
2012/06/12(火) 08:19:48.80わざとアルファベットのトークンにすることで、 {} を含む他の記号を浮かせてる
実際、リソース管理とかの重要なブロックは {} を使うことで
目立たせるコーディングスタイルもあったはず
0522デフォルトの名無しさん
2012/06/12(火) 10:17:49.99あとネストが深くなる可能性が増える
def mes(arg) {
...
}
と
def mes(arg)
...
end
や
if cond {
...
} else {
...
}
と
if cond
...
else
...
end
は打鍵数としてもそう変わらん
0523デフォルトの名無しさん
2012/06/12(火) 10:32:44.24それ以外はendで終わる。
というルールだけにしておけば、わかりやすかったのではないかと思うが、
{} の代わりに do end と書くこともできたり、BEGIN や END のように {} をただの
文ブロックとして使ってるところもあるので、ちょっと混乱するね。
0524デフォルトの名無しさん
2012/06/12(火) 10:54:19.27>{ } hは必ずセットで
果たしてそうだろうか?それは先入観ではないだろうか?
>>517もendが単なる模様と言う、ならば"}"も単なる模様だ
def mes(arg)
...
}
if cond
...
else
...
}
あ、駄目だこれ
0525デフォルトの名無しさん
2012/06/12(火) 10:59:55.05殆どのいまどきの言語が{}を採用しているから、
目がそっちになれちゃってるのよねぇ。
0526デフォルトの名無しさん
2012/06/12(火) 11:34:56.92class A
def func
"test"
end
def func2
"tess"
end
end
0527デフォルトの名無しさん
2012/06/12(火) 13:29:26.53何がやばいの?
0528デフォルトの名無しさん
2012/06/12(火) 13:36:02.15最後が end end end みたいに end の連続になって、最後ならいいけど
途中だとどこまで戻ったのかわからない、とかでしょ。
C言語の {} でも同じようなことになるけど。
0529デフォルトの名無しさん
2012/06/12(火) 13:44:36.990530デフォルトの名無しさん
2012/06/12(火) 13:54:55.820531デフォルトの名無しさん
2012/06/12(火) 14:38:43.55「多重にならない」ことがあるとしたなら、それは途中でネスト構造がなくなってるってことだもの
module M
class C
def hoge
"hoge"
endef
def hage
"hage!"
endmodule
インデントが区切れたら終了ってことにでもする?
0532デフォルトの名無しさん
2012/06/12(火) 14:47:16.30class C
def aaa
"えー"
def bbb
"びー"
def ccc
"し〜"
end #<= クラスの終わり
def の中に def も(一応)書けることとか、class 〜 end の中は「キーワード空間」ではなく普通の地の文だということを指摘するとたいてい黙る
class C
puts "クラス定義の中にメソッド実行文が書けるRubyはうんこ"
end
0533デフォルトの名無しさん
2012/06/12(火) 14:50:52.66あるいは、対応をエディタ任せにして、S式みたいに畳んじゃうとか(end終端だと辛いが)
いずれにせよ万能な解決策とはいかない
0534デフォルトの名無しさん
2012/06/12(火) 15:53:28.64(defun hoge (a b c)
(put "%d" (- a (/ b c]
みたいなの。
0535uy
2012/06/12(火) 16:37:17.46def func ; "test" end
↑こういう事たまにやる奴いるけどこれがうざいから
"test" def func a , b
後おきdefとか作ればって思う
ifもforもイテレータも時代は後置き
0536デフォルトの名無しさん
2012/06/12(火) 16:38:02.56Haskellの$みたいなもんか、あれは開き括弧を$に置き換えることで複数の閉じ括弧を纏めるって形だからちょっと違うけど
0537デフォルトの名無しさん
2012/06/12(火) 17:00:44.57超括弧って名前はそのまんますぎだって昔から思う
0538デフォルトの名無しさん
2012/06/12(火) 18:04:38.88俺は後置きif使う奴がうざいわ
0539デフォルトの名無しさん
2012/06/12(火) 18:07:39.730540デフォルトの名無しさん
2012/06/12(火) 18:10:43.210541デフォルトの名無しさん
2012/06/12(火) 18:13:22.880542デフォルトの名無しさん
2012/06/12(火) 18:17:58.570543デフォルトの名無しさん
2012/06/12(火) 18:36:11.400544デフォルトの名無しさん
2012/06/12(火) 18:50:20.75んじゃあ if 条件式 then 処理; end とか書くのか、読みにくくね?
0545デフォルトの名無しさん
2012/06/12(火) 18:58:14.18■ このスレッドは過去ログ倉庫に格納されています