【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?

Rubyの演算子 "===" についての質問です。

例:Rubyリファレンスより抜粋
require 'uri'
require 'net/http'
Net::HTTP.version_1_2 # おまじない

def fetch( uri_str, limit = 10 )
# 適切な例外クラスに変えるべき
raise ArgumentError, 'http redirect too deep' if limit == 0

response = Net::HTTP.get_response(URI.parse(uri_str))
case response
when Net::HTTPSuccess then response
when Net::HTTPRedirection then fetch(response['location'], limit - 1)
else
response.error!
end
end

HTTPRedirectionが起きたと仮定して。
この case文だと思った通りの動きをします。
しかし、case文の部分を
if response == Net::HTTPRedirection
としたところ if文の中に入ってきません。何故でしょう?

if response === Net::HTTPRedirection
としても同じ結果でした。

Rubyを勉強しはじめて 初日からこんな調子ですが
宜しくお願いいたします。

A 回答 (2件)

>Ruby で言う self は、Java で言う this 何でしょうか?



えーと、そうだと思う。
って答えるほど、JavaもRubyもよく知っちゃいないんですが。

あー、リファレンスに「self というのは何ですか」ってのが
あるね。13番目↓

参考URL:http://www.ruby-lang.org/ja/man/index.cgi?cmd=vi …
    • good
    • 0
この回答へのお礼

情報ありがとうございます。

リンク先を見てみたら
まさにそのままのリファレンスがありました。。。ごめんなさい

お礼日時:2004/09/14 05:42

逆かも。



if Net::HTTPRedirection === response

リファレンスの self === obj の項及び
リンクされてる Object#kind_of? の項参照のこと。

参考URL:http://66.102.11.104/search?q=cache:V5yvUDKblNUJ …
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます。

if Net::HTTPRedirection === response
で問題なく動きました♪

リンク先も見させてもらいました。
っで
Ruby で言う self は、Java で言う this 何でしょうか?
なんか違うきもするのですが

Ruby がオブジェクト指向的にも構造化風にも書けるのは
self が裏で仕事をしているからと書いているサイトもありました。

self って何物なんでしょうか?
追加質問になってしまいましたが
時間が空いた時にでも 答えてくれると嬉しいです。

お礼日時:2004/09/13 16:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報