アカウント名:
パスワード:
「プログラム」の初心者向けということなら、まず if else の羅列を見せてうんざりさせてから switch を教えるというのはありだと思う。大昔、私が初めて「プログラム」という仕掛けを知った時の本(多分ブルーバックス)での BASICの説明がこんな調子だった、多方向分岐も条件ループも IF文とGOTO文だけのプログラムで動きを示してから、ON だの FOR だのそれぞれの構文を示していた。
ややズレますが、switch文 という話だと、『単純に置き換えていい』と思わせちゃっていいのかな? と:Stringとかオブジェクト類 だと、ちょっと意図と変わりますよね (中身でなく、同一インスタンスかどうか の比較だから)。
こういう状況で 文字列比較したいわー というとき よくありますけど、Javaのswitchだと その周りの理由で 正しく中身の比較 にならなかったと思います。//まあ、『==』をまんま置き換えてるだけなので、Javaの『==』の仕様ですが。//JavaScriptだと 比較とか型とか適当だから 勝手に合わせて 中身の比較にしてくれたりしたような。
比較周りの話で教えるべき かもしれませんけど、意外とswitch あんまり簡単でもないよなー、と。
//数ページずらー が ないわー;とは思います(;^ω^)
Java の switch では、Java6以前だと 整数とenumだけでそれ以外のオブジェクトは使えなかったと思います。7 で String が使えるようになり、equals による中身の比較を行うようです。ついでに言えば、一つの switch の中で 整数やStringを混ぜて使うなんてこともできないです。
むしろ、JavaScript の switch の方が、=== のまんま置き換え、となるようです。(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/switch)=== による比較なので、== とは違って、型を勝手に変換したりもしないみたいです。文字列同士の場合に中身の比較になるのは、JavaScriptの === の仕様ってことになるのでしょうね。
あ、昔は そもそも型で弾かれて使えない → 今 文字列の中身比較になった;なんですね。ちょっと間違えて覚えてたようです。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
私は悩みをリストアップし始めたが、そのあまりの長さにいやけがさし、何も考えないことにした。-- Robert C. Pike
もしかしてエンドレスエイト (スコア:2, 興味深い)
「プログラム」の初心者向けということなら、まず if else の羅列を見せてうんざりさせてから switch を教えるというのはありだと思う。
大昔、私が初めて「プログラム」という仕掛けを知った時の本(多分ブルーバックス)での BASICの説明がこんな調子だった、多方向分岐も条件ループも IF文とGOTO文だけのプログラムで動きを示してから、ON だの FOR だのそれぞれの構文を示していた。
Re: (スコア:2)
ややズレますが、switch文 という話だと、『単純に置き換えていい』と思わせちゃっていいのかな? と:
Stringとかオブジェクト類 だと、ちょっと意図と変わりますよね (中身でなく、同一インスタンスかどうか の比較だから)。
こういう状況で 文字列比較したいわー というとき よくありますけど、
Javaのswitchだと その周りの理由で 正しく中身の比較 にならなかったと思います。
//まあ、『==』をまんま置き換えてるだけなので、Javaの『==』の仕様ですが。
//JavaScriptだと 比較とか型とか適当だから 勝手に合わせて 中身の比較にしてくれたりしたような。
比較周りの話で教えるべき かもしれませんけど、意外とswitch あんまり簡単でもないよなー、と。
//数ページずらー が ないわー;とは思います(;^ω^)
Re: (スコア:2)
Java の switch では、Java6以前だと 整数とenumだけでそれ以外のオブジェクトは使えなかったと思います。
7 で String が使えるようになり、equals による中身の比較を行うようです。
ついでに言えば、一つの switch の中で 整数やStringを混ぜて使うなんてこともできないです。
むしろ、JavaScript の switch の方が、=== のまんま置き換え、となるようです。
(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/switch)
=== による比較なので、== とは違って、型を勝手に変換したりもしないみたいです。
文字列同士の場合に中身の比較になるのは、JavaScriptの === の仕様ってことになるのでしょうね。
svn-init() {
svnadmin create .svnrepo
svn checkout file://$PWD/.svnrepo .
}
Re:もしかしてエンドレスエイト (スコア:2)
あ、昔は そもそも型で弾かれて使えない → 今 文字列の中身比較になった;なんですね。
ちょっと間違えて覚えてたようです。