jsdo.itに突っ込んでみた。

以前作った真似ドゥードル"Martha Graham's birthday"をjsdo.itに突っ込んでみた。
http://jsdo.it/kcha4tsubuyaki/mimic_doodle_martha_graham
位置、幅、高さの設定で、きちんと"px"指定をしてやらないとjsdo.itでは表示されないという点に少し引っかかった(最初、表示されずに首を傾げた)が、なんとか出来たので満足。

type_infoクラスがstd名前空間だった?

c++にてtypeid演算子からtype_infoクラスの参照を受け取る時、何故かヘッダが不要で、かつstd::type_infoといった風に、std名前空間だった。
何でだろう、cygwingccだからか?(g++ではなく、gccに-lstdc++としている)

#include <iostream>

class CBase
{
public:
	virtual ~CBase(){}		// スーパークラスは仮想デストラクタを宣言しておく
};

class CSub1 : public CBase
{
};

class CSub2 : public CBase
{
};

int main()
{
	CBase base_obj;
	CSub1 sub1_obj;
	CSub2 sub2_obj;
	
	// ↓ここの3つのどれか1つだけを有効にして実行してみる
//	CBase *p = &base_obj;
//	CBase *p = &sub1_obj;
	CBase *p = &sub2_obj;

	const std::type_info& info = typeid( *p );  // 実行時型情報を取得
	if( info == typeid( CBase ) ){
		std::cout << "CBase" << std::endl;
	}else if( info == typeid( CSub1 ) ){
		std::cout << "CSub1" << std::endl;
	}else if( info == typeid( CSub2 ) ){
		std::cout << "CSub2" << std::endl;
	}
	
	return 0;
}

http://www.geocities.jp/ky_webid/cpp/language/023.html より。

javascriptにてfalseとして判定されるモノ。

JavaScript: The Good Parts ―「良いパーツ」によるベストプラクティス

JavaScript: The Good Parts ―「良いパーツ」によるベストプラクティス

この本より抜き出し。
以下はjavascriptではfalsy(条件でfalse)として扱われる。

  • false(当然か)
  • null
  • undefined
  • ''(長さ0の文字列)
  • 0
  • NaN

こんなコードで確認してみた。

var decide = function(b){ return b ? 'true' : 'false';};

// 全てfalseで扱われるはず。
var str = "false: "     + decide(false)     + "\n"
        + "null: "      + decide(null)      + "\n"
        + "undefined: " + decide(undefined) + "\n"
        + "\'\': "      + decide('')        + "\n"
        + "0: "         + decide(0)         + "\n"
        + "NaN: "       + decide(NaN)       + "\n";
alert(str);


こんな感じ。順当といえば順当か。


あ、あと

== !=

は、なるべく使わずに

=== !==

を使うように、って勧めていたかな。