トップページ⇒tech
995コメント369KB

Ruby 初心者スレッド Part 55

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2014/06/21(土) 23:39:44.94ID:rKd1VvW8
プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。
質問するときは、OSやRubyのバージョン、エラーメッセージを書いたほうがいいお
RoRはスレ違いよ

前スレ
Ruby 初心者スレッド Part 54
http://peace.2ch.net/test/read.cgi/tech/1392598207/

るりまサーチ (リファレンス検索)
http://rurema.clear-code.com/

Rubyist Magazine - るびま
http://jp.rubyist.net/magazine/

逆引きRuby
http://www.namaraii.com/rubytips/
0558デフォルトの名無しさん2014/09/30(火) 03:21:26.11ID:MXlztEU0
>>545
死ね
>>546 真偽の 偽のこといった
0559デフォルトの名無しさん2014/09/30(火) 03:46:11.59ID:1IRD/DgB
http://docs.ruby-lang.org/ja/2.1.0/class/WEBrick=3a=3aConfig.html
この辺
ハッシュでfalseとnilを使い分けてる

こういうのを真似して自分で関数作ったりすると引数とったメソッド野中では
こんなことになりかねない

if @var.nil?
nilの処理
elsif @var
trueの処理
else
falseの処理
end

さらにfalseを優先して書きたい場合こうなっててもおかしくない

if @var == false
falseの処理
else
それ以外
end

こういうのがあるから、未定義だったらnilなのにデフォルトはfalseですとかやってるメソッドは
その引数がnilとfalseで同じ挙動なのか違うのか確証がない

同じだったらそもそもfalse使うなって思うけど
0560デフォルトの名無しさん2014/09/30(火) 03:59:49.80ID:Ogo7WMyz
>>557
http://ref.xaio.jp/ruby/classes/module/attr_accessor
これ見りゃわからないかな?
0561デフォルトの名無しさん2014/09/30(火) 05:09:52.18ID:LJ2oQclU
>>554
Rubyにはフィールドはない
あなたにそれをフィールドだと教えた悪い参考書や参考サイトを使ってるようだから全部捨てろ
とりあえず話はそれから
0562デフォルトの名無しさん2014/09/30(火) 05:15:08.37ID:4TmfBnqZ
>>557
>@array = Array.new
変数名に、arrayなどの既存の名前を使わない方がよい
arr に変えるよ

@arr = Array.new
Array.newだけなら、要素数0
p arr で表示してみ

@arr = Array.new(3)
これなら、要素数3
p arr で表示してみ

Array.new を参照
0563デフォルトの名無しさん2014/09/30(火) 06:08:26.11ID:3C5m2+5+
>>552
members のサイズはどのくらい? 超巨大だったりしない?
0564デフォルトの名無しさん2014/09/30(火) 07:08:13.41ID:uzsgHcDm
>>557
class ClassA
@array = Array.new # <- ここが間違い

これだと @array は「ClassA」というオブジェクトのインスタンス変数になる
君が欲しいのは「ClassAのインスタンス」というオブジェクトのインスタンス変数だろう

class ClassA
def initialize
@array = Array.new
end

とすれば解決するはず
0565デフォルトの名無しさん2014/09/30(火) 07:35:27.09ID:Gbi7LNU3
は?
0566デフォルトの名無しさん2014/09/30(火) 10:08:03.27ID:UKkIwkr4
>>557
あれ?ってなって確かめたら上のレスの通りだった
ttp://ideone.com/9AXpGD
スコープに注意
0567デフォルトの名無しさん2014/09/30(火) 14:58:07.85ID:8M9GxsYT
>>564
ああ、なるほど上手く動きました。
rubyではインスタンス変数として使うなら
def initializeに書いたりする必要があるんですね。

質問なのですが、「ClassA」というオブジェクトのインスタンス変数、
というのはクラス変数とどう違うのでしょうか?
0568デフォルトの名無しさん2014/09/30(火) 15:01:48.64ID:JjKI4EMd
インスタンスは、異なる値で複数存在可能
0569デフォルトの名無しさん2014/09/30(火) 15:19:36.61ID:KHlaSvzj
>>567
ttp://docs.ruby-lang.org/ja/2.1.0/doc/spec=2fvariables.html#class
>クラス変数はクラス自身のインスタンス変数とは以下の点で異なります。
>・サブクラスから参照/代入が可能
>・インスタンスメソッドから参照/代入が可能
0570デフォルトの名無しさん2014/09/30(火) 15:36:45.31ID:8M9GxsYT
>>569
参照範囲で使い分ける感じですかね。
教えていただきありがとうございました。
0571デフォルトの名無しさん2014/09/30(火) 20:39:00.96ID:JU1j3mFE
ガチ小中学生に煽られて、ガチ小中学生に教えたり、教わったりするスレになってるけど大丈夫?
こういうところに大人がもしも未だに混ざってるならオワコンですよ
0572デフォルトの名無しさん2014/09/30(火) 21:13:32.58ID:m29MN2Ah
>>571
ネットに限らず情報というものは
相手の肩書にとらわれず
内容を各々判断するものだ
それが出来なら朝日新聞でも読んでればいい
0573デフォルトの名無しさん2014/10/01(水) 00:41:57.59ID:zzunZpfz
お子様は親父がボーナスで買ったPC-9800でBASICを嗜むものだろう。
0574デフォルトの名無しさん2014/10/01(水) 11:27:38.11ID:OJSGbkdS
フムフムヌクヌクアプアアみたいな奴だな
0575デフォルトの名無しさん2014/10/02(木) 19:02:32.09ID:EmIzxk1A
File.delete(@temp) if File.exist?(@temp)
の部分で`exist?': can't convert nil into String (TypeError)
というエラーが出てしまうのですが、解決方法がわかりません。

ubuntu14.04
ruby1.9.3p484です
0576デフォルトの名無しさん2014/10/02(木) 19:26:18.52ID:Nbqny9/i
まずはエラーの内容を翻訳してみようー
0577デフォルトの名無しさん2014/10/03(金) 00:22:46.82ID:8ZCfX4zK
「存在する?」:
皆無をストリング(TypeError)に変換することができません。
0578デフォルトの名無しさん2014/10/03(金) 00:29:30.66ID:i0V0nK+8
>File.delete(@temp) if File.exist?(@temp)
>の部分で`exist?': can't convert nil into String (TypeError)
nil型を、String型に変換できない(型エラー)のかな?
@tempに値が何も入っていないのでは?

File.delete(@temp) if File.exist?(@temp)
この行の前に、
p @temp してみ。nilになってる?

Rubyを全然、わかっていないのなら、
たのしいRuby、第4版、2013
を読んでから、プログラミングした方が速い
0579デフォルトの名無しさん2014/10/03(金) 07:22:21.94ID:d+M1zPQO
> nil型を、String型に変換できない(型エラー)のかな?
Rubyを全然わかっていないのはどっちだよ
0580デフォルトの名無しさん2014/10/03(金) 09:37:53.93ID:ncSYSBhR
特異メソッドを定義したときに
メソッドfuga内から、
Hogeの名前を取得する方法がわからず、
教えてください。

class Hoge
class << self
def fuga
....
end
end
end
0581デフォルトの名無しさん2014/10/03(金) 12:18:43.89ID:zwNCTHT6
お断りします
   ハハ
   (゚ω゚)
  /  \
((⊂ )  ノ\つ))
   (_⌒ヽ
   ヽ ヘ |
εニ三 ノノ J
0582デフォルトの名無しさん2014/10/03(金) 12:20:42.30ID:zwNCTHT6
p ancestors
フムフムヌクヌクアプアアみたいな奴だな
0583デフォルトの名無しさん2014/10/03(金) 12:36:09.34ID:iohOSMY+
>>575
exist?は、引数に与えたファイルパス文字列のファイル名が存在するかどうか調べるメソッドだよね
で、この行の中でエラー文の“string”に関係しそうなのは、パス文字列のつもりで与えた引数の@temp
なのでこの場合は、引数@tempの中身がうっかり“nil”とやらになってんじゃないか?と疑い、前出の通り“p @temp”を入れて調べるのがまず第一

“type error”とか“argment error”とか出てきたら、とりあえずその行の引数とか変数調べてみればいいよ
0584デフォルトの名無しさん2014/10/03(金) 18:40:26.63ID:LkYraUGE
>>580
文字列として取得したいならば self.to_s とか to_s とか
0585デフォルトの名無しさん2014/10/03(金) 22:12:19.49ID:x4vX3Y5M
>>582
>> 584
ありがとうございます。
0586デフォルトの名無しさん2014/10/04(土) 11:53:38.36ID:pzA2eR9p
日帝の残滓が作った言語
0587デフォルトの名無しさん2014/10/04(土) 20:40:54.60ID:M66Mgi8t
そんなふうに色めがねでみるのは論理ではない。もっとこころを透明にしてください。
プログラミングには、論理的な思考が必要
0588デフォルトの名無しさん2014/10/05(日) 00:41:36.89ID:QzEV7fmk
>>556
>>563

返信遅れて申し訳ない。
メモリの挙動を監視するとCSVが一発で読み込まれてるようにしか思えなかった。
上の例のmenber変数はかなり巨大なハッシュだけどCSVに入れる前にARRAYにしておいても
CSV書き込みでとてつもないメモリを消費する。
複数回に分けて追記すればいいのかな
0589デフォルトの名無しさん2014/10/05(日) 00:45:06.70ID:QzEV7fmk
menberはハッシュじゃなくて自分で定義したクラスでした。
最初にmenber全部ARRAYにしてからCSVに書き込もうとするとメモリがやばいので
to_arrayを定義して逐次的にCSVに書き込んでます
0590デフォルトの名無しさん2014/10/05(日) 00:55:17.19ID:QzEV7fmk
失礼
CSVが一発で読み込まれているのではなく。
CSVの書き込み用バッファが4K確保されて書き込まれて、次の4kに進むのではなく
一気に全部確保されている気がする。
このため書き込みたい内容を一度メモリ上ですべて確保してる気がする
0591デフォルトの名無しさん2014/10/05(日) 01:31:33.72ID:IUlRSCDi
>>588-590
お前わざとやってるだろw
0592デフォルトの名無しさん2014/10/05(日) 01:59:12.81ID:MFOvIang
コードの断片だけ見せられてもな
menbersのクラスも分からんし
menbers.eachかmenber.to_arrayが原因じゃねーの?
まあ最大のバグはmenberのスペルなんですけどね
0593デフォルトの名無しさん2014/10/05(日) 13:26:52.71ID:sdXqIouw
男たちのビット誤り率という意味かもしれん
0594デフォルトの名無しさん2014/10/05(日) 13:28:42.98ID:FZuSwsnO
男どもの過ち‥奴らは何を間違えたのだろうか?
0595デフォルトの名無しさん2014/10/05(日) 14:49:48.27ID:QzEV7fmk
ぐは
0596デフォルトの名無しさん2014/10/05(日) 17:01:45.15ID:XrIDkgzN
xx
0597デフォルトの名無しさん2014/10/06(月) 23:26:34.77ID:OEPOtQ0D
ほんと馬鹿な質問で、ここで聞くのも大変申し訳無いんだが、

今日やさしいRuby という本を買ってきて、まずRubyのバージョンを確認しろという指示があった

具体的には、「macを使っている人は、まずコンソールを起動します。コンソールを起動するには、Finderからターミナルを選んでください。rubyのバージョンを調べるには、ruby-v
と入力し、必要なオプションを加えます」と書いてある。

この ruby-v と入力し必要なオプションを加えます というものがどういう動作かわからない。

とりあえず、このメモ帳みたいなターミナルの画面の続きに、ruby -v と入力してenterキーを押すと、

-bash: -v: command not found と 表示されるだけ。本来ならRubyのバージョン情報が出てくるらしいんだが、何が間違っているのだろうか?コンソールに入力する、という文章も
あるが、コンソールと思われるものを開いても、そもそも何かを入力できる箇所がなく、ログなどがずらっと並んでいるだけ。

macは標準のコマンドとしてRubyが利用できるとのことなので、Rubyのインストールという行為はやっていない。
0598デフォルトの名無しさん2014/10/06(月) 23:47:18.60ID:OrurmOLO
>>597
ターミナル起動して bash のプロンプト($ マーク)の右に ruby -v って入力して enter すると

$ ruby -v
ruby 2.0.0p481 (2014-05-08 revision 45883) [universal.x86_64-darwin13]

みたいに表示されるはず
うまくいかなければスクリーンショットを貼ってくれると話が早い
0599デフォルトの名無しさん2014/10/07(火) 00:02:31.37ID:mh2mjaxD
>>597
ちなみに「ログなどがずらっと並んでいるだけ」のやつはその本でいうところの「コンソール」とは違うから気にしなくていい
多分全部「ターミナル」と読み替えていい
0600デフォルトの名無しさん2014/10/07(火) 00:02:38.09ID:A7b9XBsz
初心者は無理せずWindows使えよ
実はプログラマにはWindowsの方がフレンドリー
コンソールやターミナル、とか用語が安定しなくて迷ったりしないですむ
0601デフォルトの名無しさん2014/10/07(火) 00:13:52.75ID:dLpFFXt+
Windows普通に環境構築大変じゃね?
Macだと最初からruby入ってる
0602デフォルトの名無しさん2014/10/07(火) 00:54:44.80ID:OE9FEeTe
windowsでruby書く人って居るのか?
聞いたことない
0603デフォルトの名無しさん2014/10/07(火) 01:12:14.80ID:YQhu9gFf
winとrubyは絶対にやってはならない組み合わせの一つ
0604デフォルトの名無しさん2014/10/07(火) 01:13:32.04ID:YQhu9gFf
というか、Windowsのほうがプログラマにフレンドリー発言でRuby使ったことないのがもろ(ry
0605デフォルトの名無しさん2014/10/07(火) 07:08:20.75ID:TyujhZt1
Rails とか複雑なことしようとしないなら、インストーラもあるし Windows でも十分使える
0606デフォルトの名無しさん2014/10/07(火) 07:30:12.70ID:5iNhE6Cu
Windowsをはずしたら、負けることになる(死にます)
0607デフォルトの名無しさん2014/10/07(火) 09:01:44.10ID:cA1BC5is
>>597
買って来たやさしいRubyの版数
使っているOS XのVersion
X codeのVersion
commandline toolsのインストールの有無
を書け。
まずはそれからだ。

その本を使うためにhomebrewとrbenvを入れる必要が出るだろうけどな。
0608デフォルトの名無しさん2014/10/07(火) 09:06:59.09ID:Jaq4UASp
>>597
-vってコマンドを実行したいって思われてるな。
rubyの前に、ls、cd、catという基本的なコマンドを使う練習から始めてみてはどうだろう。
0609デフォルトの名無しさん2014/10/07(火) 10:25:54.57ID:JVM430wV
>>597
http://dotinstall.com/lessons/basic_unix
コマンドの勉強ならこのサイトがいいんじゃないかな。
動画で説明してるからわかりやすいと思う。
0610デフォルトの名無しさん2014/10/07(火) 19:10:46.04ID:RfEYvcpp
params[:body] が 半角英数字のみ(つまり日本語文章ではないかどうかを判断したい)か
どうかを簡単にチェックする方法を教えてください
0611デフォルトの名無しさん2014/10/07(火) 19:51:50.70ID:TyujhZt1
>>610
Railsスレとマルチすんな
0612デフォルトの名無しさん2014/10/07(火) 20:03:27.32ID:Lth77BfJ
マルチポストだったか
ヌケヌケと答えてしまうところだった
0613デフォルトの名無しさん2014/10/07(火) 22:12:43.85ID:KzNWKz7K
どうせ壁打ちと大差ないのにマルチだけは気にするゴミ
0614デフォルトの名無しさん2014/10/07(火) 22:21:38.40ID:lactWcAJ
壁打ちってどういう比喩?
0615デフォルトの名無しさん2014/10/07(火) 22:38:55.76ID:BlA3KCzr
別板の質問見かけたときにコピペするだけで荒らせるんだから安いもんだと思う
0616デフォルトの名無しさん2014/10/08(水) 12:51:11.03ID:RGealQpg
↑これが壁打ち
0617デフォルトの名無しさん2014/10/08(水) 14:05:31.36ID:WR+D1wBU
>>610
ヒント: 正規表現
0618デフォルトの名無しさん2014/10/08(水) 17:18:55.98ID:qx5li64a
Struct使うメリットを教えてください。setter,getterは他の言語に比べるとRubyはattr_accessorがあるので簡単だと思うのですが。
class Point
attr_accessor :x, :y
end
class Area < Point
end
と
class Area < Struct.new(:x, :y)
end
この2つの違いを教えてください
0619デフォルトの名無しさん2014/10/08(水) 17:34:36.72ID:vDUa8S4h
簡潔に書ける
0620デフォルトの名無しさん2014/10/08(水) 19:06:34.65ID:5mBaIux9
アクセサ以外のメソッドも定義されなかったっけ?
あれ、気のせい?
0621デフォルトの名無しさん2014/10/08(水) 22:02:54.67ID:0CbvvJCh
Struct の方は Enumerable モジュールが include されるのと、
initialize を定義しなくても new で各メンバの初期化が出来る

attr_accessor の方は Enumerable を取り込まないため
Enumerable 由来のメソッドが大量に定義されないで済む

個人的には Struct が好みだけど、一般的には attr_accessor の方が利用されている
0622デフォルトの名無しさん2014/10/10(金) 22:57:37.90ID:hLe2xq4/
10月から、プログラミングをはじめた者です。
本当に初歩の初歩だと思うんですが、、お答え願えませんか?

s = "My name is Monar"
s = s.split
p s[0] # => M
p s.class = # => String

a = s.split
p a[0] # => My
p a.class => Array

Stringをsplit したものを何かにぶち込むと配列になるのでしょうか?
そういうものだ、って解釈でよいのでしょうか。
0623デフォルトの名無しさん2014/10/10(金) 23:05:19.35ID:j7rjXjTe
>>622
お前が寝ぼけてるだけ
もう一度落ち着いてそれ実行してみろ
0624デフォルトの名無しさん2014/10/10(金) 23:21:19.86ID:hLe2xq4/
>>623

うわ。ほんとだ。寝ぼけてただけでした。
ほんとすいません。

s = "My name is Monar"
p s.class # => String
p s[0] # => M
s = s.split(" ")
p s[0] # => "My"
p s.class # => "Array"

これでした。すいません。
stringをsplitすると、配列オブジェクトになるってのはあってますか?
0625デフォルトの名無しさん2014/10/10(金) 23:29:13.14ID:Mhk11MXA
ドキュメント見れば一発やで
0626デフォルトの名無しさん2014/10/11(土) 00:17:24.24ID:t1ONSAIz
[1] pry(main)> require 'time'
=> true
[2] pry(main)> DateTime.new(1970,1,1)
=> #<DateTime: 1970-01-01T00:00:00+00:00 ((2440588j,0s,0n),+0s,2299161j)>
                    ↑+00:00
[3] pry(main)> DateTime.new(1970,1,1).to_time
=> 1970-01-01 09:00:00 +0900
              ↑+0900 ファ!?
0627デフォルトの名無しさん2014/10/11(土) 00:19:51.34ID:bs/sFubV
日本時間
0628デフォルトの名無しさん2014/10/11(土) 12:01:18.49ID:WAdfmHXI
夏時間終わっててよかったな
0629デフォルトの名無しさん2014/10/11(土) 13:04:18.34ID:GOKZHlwE
ブロックの書き方でdo〜end形式の方が{〜}形式より推奨される理由は何ですか?
rubocopもバシバシ警告してくるのですがイマイチ理由が分かりません。
0630デフォルトの名無しさん2014/10/11(土) 13:44:55.56ID:2iP0q5Ek
嫌なら{}で良いんだよ
0631デフォルトの名無しさん2014/10/11(土) 13:48:39.52ID:7ki1LAY5
>>629
http://stackoverflow.com/questions/5587264/do-end-vs-curly-braces-for-blocks-in-ruby
0632デフォルトの名無しさん2014/10/11(土) 14:58:29.97ID:9vsymaaR
>>624
s = "My name is Monar"
s = s.split(" ")を使うと、
文字列が空白で分割されて、配列の0〜3に格納される

[My,name,is,Monar]

>>629-631
ブロックが1行なら、{ }の方が見やすい
複数行なら、do〜endを使う
0633デフォルトの名無しさん2014/10/11(土) 15:14:29.24ID:7ki1LAY5
>>632
アンカつけるならリンク先読んでちょ
あと My じゃなくて "My" ね
06346292014/10/11(土) 18:35:23.61ID:GOKZHlwE
>>631
やっぱ優先順位から見ると{}の方が自然に思えますよね。
「複数行だとdo end」も見た目のこだわり以上の理由はないと理解しました。
0635烏有(uyuu) ◆/uuWdTQ106 2014/10/11(土) 18:40:20.18ID:fozbFsv6
壁ドンのやり方で柱〜ふすまの方が{ドア}部分をドンするより推奨される理由は何ですか?
家族もバシバシ警告してくるのですがイマイチ理由が分かりません。
0636デフォルトの名無しさん2014/10/12(日) 02:07:30.17ID:2D7VEq3z
うるさい
0637デフォルトの名無しさん2014/10/12(日) 02:23:45.11ID:LsklK5Cs
>>634
open obj.filename do |file|
# open()に渡されるブロック
end
open obj.filename {|file|
# obj.filename()に渡されるブロック
}
これだけ見ると do 〜 end の結合度のが自然に見えない?
どっちか片方だけが自然、って訳ではないと思う
0638烏有(uyuu) ◆/uuWdTQ106 2014/10/12(日) 04:40:30.30ID:iENiuObx
>>636
やっぱ優先順位から見ると{ドア}ドンの方が自然に思えますよね。
「複数回だと壁 ドン」もドンの音のこだわり以上の理由はないと理解しました。
0639デフォルトの名無しさん2014/10/12(日) 14:23:41.50ID:MraGD/gc
自分はブロックも引数の一種だとおもってるから
引数が二つ以上あるのにカンマがないのはおかしいので↑は自然とは思わないなあ
↓のfilenameがselectとかmapとかのときを考えると↓の結合度が自然だと感じる

まあどっちにしろそんなわかりにくい結合させずに括弧で明示するけどね
0640デフォルトの名無しさん2014/10/12(日) 16:06:02.65ID:Yv9TiAGs
英語っぽく見せかけるためだけのもので
冗長なうえ結合度が違うのは害悪ですらある
637は要らぬ混乱を招くとても悪いスタイルだから真似しちゃダメ
0641デフォルトの名無しさん2014/10/12(日) 21:26:34.17ID:Tx1BX1Kd
個人的には、複数行か否かで分けるのではなく
戻り値を扱うかどうかで書き分けてるな〜
0642デフォルトの名無しさん2014/10/12(日) 22:15:56.50ID:ElJnU/0K
>>641
俺もそうだな
戻り値を使うなら {}、使わないなら do..end だな
0643デフォルトの名無しさん2014/10/13(月) 05:27:00.26ID:j90eBv3o
戻り値というか副作用の有無で分けてる
0644デフォルトの名無しさん2014/10/13(月) 13:11:18.96ID:xzr2gdng
副作用で思い出したのだがpushやpopに!が付かないのは
何か歴史的な経緯があるのかい?
0645デフォルトの名無しさん2014/10/13(月) 13:15:20.64ID:j90eBv3o
対応する非破壊版がないから
後でそれを追加できないという破綻した命名規約だけどね
0646デフォルトの名無しさん2014/10/13(月) 13:27:29.45ID:yFRqmPNp
後で追加する可能性が無いんじゃない
0647デフォルトの名無しさん2014/10/13(月) 14:06:45.14ID:qSnkJX9/
>>644
正確な経緯は知らんけど、Lisper な Matz には副作用や参照透明性みたいな
概念を重要視していなかった(=深く考えていなかった)だけだと思う

>>645
命名規則が破綻したケースの例としては、ハッシュを更新する破壊的メソッド Hash#update に
後から非破壊メソッドを追加できずしかたなく Hash#merge! と Hash#metge を追加した、
というのがあるね
0648デフォルトの名無しさん2014/10/14(火) 07:50:28.20ID:FY2dMxGy
pushやpopはどう考えても機能名称的にpushやpopという単語だろうという縛りがないでもない
まあ今も昔も深く考えてないというのは間違いないと思うが
今だって標識くらいの見かけ的な役割だもんね ! と ?
0649デフォルトの名無しさん2014/10/15(水) 21:56:04.60ID:0iTmmfe+
普段は非破壊的メソッドを使い、危険を冒す価値のある場所だけに使う。
何か問題があれば!を検索して集中的に調べる。
Immutableなコレクションしか持たない言語よりも柔軟で実用的だと思うんだ。
これはrubyの好きな点の一つなので、!のルール付けは徹底してほしいところだ。
0650デフォルトの名無しさん2014/10/15(水) 23:39:21.06ID:KzNnpQwi
delete!とか?
0651デフォルトの名無しさん2014/10/16(木) 07:30:36.81ID:GRIRO8vO
updateのaliasにupdate!を付けるのはあとから幾らでも出来る
逆が出来ないから困るって話をしてるんだが
0652デフォルトの名無しさん2014/10/16(木) 10:25:27.96ID:qnIoh31O
馬鹿には無理
0653デフォルトの名無しさん2014/10/16(木) 10:31:38.08ID:6hon/NKm
>>651
逆ができないってどういうこと?
aliasを付けることはどっちもできるし
ソース上で不統一だとどっちの場合も同じように困ると思うんだけど
何に困ってるの
0654デフォルトの名無しさん2014/10/16(木) 15:55:07.15ID:CsOFEKWu
44 デフォルトの名無しさん [sage] 2014/10/13(月) 13:11:18.96 ID:xzr2gdng Be:
副作用で思い出したのだがpushやpopに!が付かないのは
何か歴史的な経緯があるのかい?

645 デフォルトの名無しさん [sage] 2014/10/13(月) 13:15:20.64 ID:j90eBv3o Be:
対応する非破壊版がないから
後でそれを追加できないという破綻した命名規約だけどね
0655デフォルトの名無しさん2014/10/16(木) 15:56:08.66ID:CsOFEKWu
命名規則が破綻したケースの例としては、ハッシュを更新する破壊的メソッド Hash#update に
後から非破壊メソッドを追加できずしかたなく Hash#merge! と Hash#metge を追加した、
というのがあるね

648 デフォルトの名無しさん [sage] 2014/10/14(火) 07:50:28.20 ID:FY2dMxGy Be:
pushやpopはどう考えても機能名称的にpushやpopという単語だろうという縛りがないでもない
まあ今も昔も深く考えてないというのは間違いないと思うが
今だって標識くらいの見かけ的な役割だもんね ! と ?
0656デフォルトの名無しさん2014/10/16(木) 17:18:05.50ID:MV7SzJpM
破壊的メソッドは戒めを込めて delete!!!!!!!!!!! にしておくべきだった
0657デフォルトの名無しさん2014/10/17(金) 02:16:25.49ID:EUFGtU/Q
Windows7上でruby2.0.0 p451のgemを使ってnokogiriをインストールしようとしましたが
うまくいきません。ネットでやると失敗します。

で、「Rubyによるクローラ開発」って本に、そういうときはコンパイル済みバイナリをローカルに
置くのがいい、とあったので、rubygem.orgからx86-mingw32というのを取って来て実行してみた
のですが、
Unable to resolve dependencies: nokogiri requires mini_portile
ってエラーが出て進まなくなってしまいます。
環境が悪いんでしょうか? みなさんとこ上手くインストールできてます?
■ このスレッドは過去ログ倉庫に格納されています