目次

ニュース

日記カテゴリ

書庫

Rubyのお話です。



次の処理を実行するとどうなるでしょうか?

"name" == "name"
=> true



もちろん、trueですね。

 


では、次の処理を実行するとどうなるでしょうか?

#equal?メソッドはオブジェクトIDが同じときtrueを返す
"name".equal?("name")
=> false


trueになると思いましたが違うみたいです。
ということは、左辺の"name"と、引数の"name"は違うオブジェクトになっているみたいです。



では、次の場合はどうなるでしょうか?

str1 = "name"
str2 = "name"

str1.equal?(str2)
=> false



ではでは、次の場合はどうなるでしょうか?

str1 = "name"
str2 = str1

str1.equal?(str2)
=> true


ようやく、trueが返ってきました。

 

ちなみに、NETで似たようなことをやると、Trueが返ってきます。
string str1 = "name"
string str2 = "name"
str1.Equals(str2)
=> True


確か、.NETでは同じ文字リテラル"name"が存在する場合は、同じ場所を参照していたはず。
#そうですよね?



けど、Rubyの場合は違うみたいですね。


まぁよくよく考えれば、1行1行その時に解釈して実行しているんだから
同じ文字リテラルでも、違うオブジェクトになるのはしかたがないのか。

投稿日時 : 2007年7月19日 21:02
Feedback
  • # re: "name".equal?("name")はtrueか?
    ゆき
    Posted @ 2007/07/19 21:14
    >"name".equal?("name")
    あ、1行といえば1行か...

  • # re: "name".equal?("name")はtrueか?
    渋木宏明(ひどり)
    Posted @ 2007/07/19 23:28
    >確か、.NETでは同じ文字リテラル"name"が存在する場合は、同じ場所を参照していたはず。
    >#そうですよね?

    そういう最適化が働くこともあるかもしれませんが

    "name".Equals("name")

    が true なのはそれが理由ではありません。

    「そういう風に動作するように」string.Equals() が実装されているからです。

    でないと、例えば、異なるアセンブリに含まれている「同一の文字列」との Eauals() まで保証しきれないです。
  • # re: "name".equal?("name")はtrueか?
    ゆき
    Posted @ 2007/07/20 6:14
    >「そういう風に動作するように」string.Equals() が実装されているからです。
    >でないと、例えば、異なるアセンブリに含まれている「同一の文字列」との Eauals() まで保証しきれないです。
    なるほど、勉強になります。
    ありがとうございます!!
  • # re: "name".equal?("name")はtrueか?
    渋木宏明(ひどり)
    Posted @ 2007/07/21 1:15
    >まぁよくよく考えれば、1行1行その時に解釈して実行しているんだから
    >同じ文字リテラルでも、違うオブジェクトになるのはしかたがないのか。

    んー、これもどうかなー?

    今や「スクリプト言語である」ことは、必ずしも「逐次解釈&実行方式である」ことと等しくないです。
  • # ed meds online without prescription or membership - https://cheapdr.top/#
    Dikolipo
    Posted @ 2023/04/03 15:33
    ed meds online without prescription or membership - https://cheapdr.top/#
  • # buy doxycycline - https://doxycyclinesale.pro/#
    Doxycycline
    Posted @ 2023/04/22 4:11
    buy doxycycline - https://doxycyclinesale.pro/#
  • # buy prednisone online no script - https://prednisonesale.pro/#
    Prednisone
    Posted @ 2023/04/22 15:17
    buy prednisone online no script - https://prednisonesale.pro/#
  • # ed meds: https://edpills.pro/#
    EdPillsPro
    Posted @ 2023/05/16 3:27
    ed meds: https://edpills.pro/#
  • # pain meds online without doctor prescription https://fastpills.pro/# canada pharmacies online prescriptions
    FastPills
    Posted @ 2023/06/29 23:20
    pain meds online without doctor prescription https://fastpills.pro/# canada pharmacies online prescriptions
  • # ï»¿paxlovid https://paxlovid.pro/# - paxlovid
    Paxlovid
    Posted @ 2023/07/03 4:07
    paxlovid https://paxlovid.pro/# - paxlovid
  • # ï»¿paxlovid https://paxlovid.store/
    paxlovid covid
    Paxlovid
    Posted @ 2023/07/13 21:48
    paxlovid https://paxlovid.store/
    paxlovid covid
  • # ed pills gnc https://edpills.ink/# - best pills for ed
    EdPills
    Posted @ 2023/07/27 0:57
    ed pills gnc https://edpills.ink/# - best pills for ed
  • # mens erection pills https://edpillsotc.store/# - ed pills cheap
    EdPills
    Posted @ 2023/10/08 1:18
    mens erection pills https://edpillsotc.store/# - ed pills cheap
  • # Paxlovid over the counter https://paxlovid.bid/ Paxlovid buy online
    Paxlovid
    Posted @ 2023/10/25 23:03
    Paxlovid over the counter https://paxlovid.bid/ Paxlovid buy online
  • # prednisone 20 mg generic https://prednisonepharm.store/ cheap prednisone 20 mg
    Prednisone
    Posted @ 2024/01/20 17:36
    prednisone 20 mg generic https://prednisonepharm.store/ cheap prednisone 20 mg
  • # Clava is the best
    Danielthash
    Posted @ 2025/05/08 16:37
    Good news for all us
タイトル
名前
Url
コメント 

Blog 利用状況