読者です 読者をやめる 読者になる 読者になる

Kuinでポリモーフィズムできるか実験

昨日Kuin1.00がリリースされましたね。
ということで早速使ってみました。

と、その前にKuinってなんぞや?という人もいると思うので軽く説明。
ってか抜粋。

プログラミング言語Kuinは、「HSP並みに作りやすく、C++並みに実用的な言語」というコンセプト
で制作された、究極の言語です。 Kuinの主な特徴について以下に列挙します。
オブジェクト指向でありながら、可能な限りシンプルで解りやすい設計
・言語設計の美しさより、実用面での美しさを重視
・ポインタ、イテレータ、テンプレートなど、ややこしい概念はすべて排除(代替機能を用意)
・動的メモリは自動で解放されるので、解放処理が不要
・豊富な標準ライブラリ(3D描画なども簡単)
・コンパイル速度が爆速
・64bitネイティブ機械語を生成するので、実行速度も速い
・何もプログラムを書かなければ、自動でHello World!!になる

製作者はいわずとしれたくいなちゃん(@b2)

さて、ドキュメントにポリモーフィズムとかそこらへんのこと全然書かれていないので
使えるのかな?とか疑問に思ったので試してみた。
結論から言うと使えて以下の様な感じになる。

class Hoge()
	func method()
		do Dbg@Log("hoge")
		return 
	end func
end class

class Foo(@Hoge)
	+func method()
		do Dbg@Log("foo")
		return 
	end func
end class

func getInstance(id :int) : @Hoge
	if (id = 0)
		return #@Hoge
	else
		return #@Foo
	end if

end func

func Main()
	var a: @Hoge :: @getInstance(0)
	do a.method()
	do a :: @getInstance(1)
	do a.method()
	do Kuin@Stop()
end func

迷った点はグローバルスコープのものはすべて@で修飾しなくちゃいけないということでしょうか?
関数やクラスも@で修飾しないといけません。それさえ気をつければあとはドキュメントにしたがって
直感どおりかけます。
ぱっと見気持ち悪いですがなれるとスラスラかけて良い。
次作るゲームにはKuin使おうと思う。

はてなのハイライトはやくKuinに対応しないかな...