JavaScriptで「(a ==1 && a== 2 && a==3)」の結果を真にする手法が議論される 16
ストーリー by hylom
JavaScriptに不可能はない 部門より
JavaScriptに不可能はない 部門より
JavaScriptで「(a ==1 && a== 2 && a==3)」という式の結果を真にするにはどうすればいいのか、StackOverflowで議論されている。
「aは1でもあり2でもあり3でもある」という状況は一見矛盾しているが、たとえばaをオブジェクトとし、文字列として評価されるごとに異なる結果を返すようにすれば簡単に実現できる。また、ホワイトスペースではなく文字として認識されるハングルの半角スペースを使って同じように見えるが実際は異なる3つの変数を定義するもの、getterを利用するものなど、さまざまな方法が提案されている。
アルファでありオメガである (スコア:0)
(a ==1 || a== 2 || a==3)
こうする。
ダメか。
Re:この辺がJavaScriptの嫌いなところ (スコア:1)
演算子のオーバーロードがある言語でもできてしまいますが
Re: (スコア:0)
演算子のオーバーロードの方は、まだ意識してそうならないようにみんな努力してくれるから。
JavaScriptは不意打ちでバグでるからな。
Re: (スコア:0)
意識とか努力とか。
2行目は指摘と関係ないし。
Re: (スコア:0)
とにかく嫌いなんだ、という以上のことが読み取れなかった。
JavaScript でも意識してそうならないように努力すれば良いのでは。
Re: (スコア:0)
C++/C# とかでも全く同じことできますよ。
Re: (スコア:0)
C# でも2種類書いてみた。
class changeValue
{
int i = 1;
public static implicit operator int(changeValue v)
{
return v.i++;
}
}
class allEqual
{
public static bool operator ==(allEqual v1, int v2)
{
return true;
}
Re: (スコア:0)
BYTE b = 1;
#define a (b++)
だめ?
Re: (スコア:0)
変数無しの
#define a 1 || 1
でOK
Re:この辺がJavaScriptの嫌いなところ (スコア:1)
#define a 0,3
でもOKですね
Re: (スコア:0)
#define == |
とか考えたけどさすがに無理だった
Re: (スコア:0)
C/C++で評価順序が規定されているところはわりと少ない。
Re: (スコア:0)
Re: (スコア:0)
こういう偏見は一生治らんだろうな。
Re: (スコア:0)
オフトピ?これはオントピックだろう。
どなたかプラスモデ差し上げてくれ