Hatena::Groupnadesiko

99円のへたれ学習帳

2008-03-24

チラシの裏 なでしこの文法

| 20:51

wikiを書いていて思ったこと。

制御構文の中と外で「=」の挙動が違う

たとえばPHP以下のようにすると意図したとおりになりません

if($_GET["id"] = ""){ // =ではなく==
    echo "引数がおかしい";
}

ところが、なでしこで以下は意図したとおりになります

もし(引数="")ならば
  "引数がおかしい"と言う

なでしこではCやPHPと違って結果をwhileでぐるぐるして値がなくなったら抜ける、みたいなコードは書きませんし、別にPHPでもやろうと思えばできますが、演算子の挙動が制御構文の中と外とで違うのはなんだかなあと。もちろんミスもします。

いうことで

  • AはB(代入) → 「=」に
  • AがB(比較) → 「==」に

すれば整合性取れるじゃないか!とか思ったわけです。

以上チラシの裏でした\(^o^)/

kujirahandkujirahand2008/03/25 12:14C/Java系の言語だと、代入が「=」、比較が「==」です。
BASIC系の言語だと、代入も比較も「=」です。
言語の解析を行う時は、C/Java 系の方が明確になり楽ですね。
ちなみに、Pascalだと、代入が「:=」で比較が「=」ですYo!

kyuuzyuu9yenkyuuzyuu9yen2008/03/26 16:45確かにBASICではどっちも"="ですね。自分はVBでも"=="って書くことがたまにあります(^ ^;
解析が楽というのは、すべて同じ実行器が使えるからでしょうか?

kujirahandkujirahand2008/03/27 22:26VBだと、== って記述できるのですか?Excel VBAだとエラーですね。
解析が楽というのは、代入の「=」と比較の「==」と記法を分けておくと、文脈を考えずに、代入と比較を区別できるんです。両方とも「=」だと、文脈を考慮しないといけないんです。

MaximeMaxime2012/03/26 16:41Woah nelly, how about them apepls!