アカウント名:
パスワード:
「プログラム」の初心者向けということなら、まず 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の === の仕様ってことになるのでしょうね。
あ、昔は そもそも型で弾かれて使えない → 今 文字列の中身比較になった;なんですね。ちょっと間違えて覚えてたようです。
最近のバージョンだとString にswitch文を つかうと、同一インスタンスかの比較ではなく、文字列の内容を比較するようになったのでは?7だか6だかから。
そーゆー話じゃないと思いますたとえ話にツッコミ入れて本題とは関係ない議論を繰り広げる会議を思い出した
関係ないけど、1行目の
と思わせちゃっていいのかな? と:
が三項演算子に見えてしょうがない//if(と思わせちゃっていい)// return と;
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
アレゲは一日にしてならず -- アレゲ研究家
もしかしてエンドレスエイト (スコア: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)
あ、昔は そもそも型で弾かれて使えない → 今 文字列の中身比較になった;なんですね。
ちょっと間違えて覚えてたようです。
Re: (スコア:0)
最近のバージョンだとString にswitch文を つかうと、同一インスタンスかの比較ではなく、文字列の内容を比較するようになったのでは?7だか6だかから。
Re: (スコア:0)
そーゆー話じゃないと思います
たとえ話にツッコミ入れて本題とは関係ない議論を繰り広げる会議を思い出した
Re: (スコア:0)
関係ないけど、1行目の
と思わせちゃっていいのかな? と:
が三項演算子に見えてしょうがない
//if(と思わせちゃっていい)
// return と;