Boo
Boo 0.5.2 Booのマイナーリリース。目新しいところでは、duckyオプションの追加が挙げられます。 def add (x, y): return x + y print (add (10, 20)) print (add ("Hello,", "World")) こんなコードをxxx.booとか保存して > booc xxx.boo コンパイルすると…
ティーポットを表示するだけのサンプル。ウィンドウをリサイズするだけで表示がおかしくなります。(^^; import System import System.Drawing import System.Windows.Forms import Microsoft.DirectX import Microsoft.DirectX.Direct3D class MyForm (Form)…
相変わらず資料不足なのでチェックインログやテストケースのソースを読むしか新機能を調べる方法がありません。(^^;・ビット演算 サポートされていなかったと記憶していますが、今は使えるようになりました。Booでは論理演算にはor,andを、ビット演算は|,&を…
・Booチュートリアル クラスの説明のために簡単なオブジェクト指向入門を書いていて挫折。2ヶ月くらい放置状態で今後も状況は改善されそーにないので中途半端ですが出してしまいます。最近はオブジェクト指向に対して後ろ向きでして、変数管理の手法の1つ…
Boo チュートリアルを更新しました。5章データ構造と、6章ソースファイルとアセンブリを追加しています。そろそろ長くなってきたので読みやすい形式にしたいんですが、手打ちHTMLはちょっとやりたくないなぁ。(^^; なんか便利なソフトないかしら・・・(追記)…
Booの予約語を見ながら言語を調査しているのですが、今回はtransientです。辞書を引くと 一時的な,つかのまの,はかない とあるので、NonSerialized属性みたいなものかと予想したら、そのとおりでした。(^^; import System.IO import System.Runtime.Serializ…
BooはPython風の構文を採用した言語ですが、.NET版のPythonではありません。Pythonといえばインデントによるブロックが特徴的なためインデントによるブロックを使っていると、Pythonとかなり互換性が高そうに見えてしまいますが気のせいです。(^^;Pythonには…
そういえば、一度も動かしたことが無かったので実験です。対象は昨日のCalcです。これをCalc.dllとしてビルドし、コイツを呼び出すテストモジュールを作成します。 ファイル:calctest.boo import Calc def Main(): calc = Calc() print calc.Add(1, 2) print…
Booではカスタム属性をサポートしているので、他の言語同様にNUnitを使えます。例えば、次のようなクラスがあったとします。 ファイル:calc.boo namespace Calc import System import System.Collections enum MemOpe: None Add Subtract class Calc: mem = …
メイクファイル プロジェクトを作れば、VS.NETでもデバッグ出来ましたね。(^^;(追記) 手順 VS.NETを起動、メニューのファイル>新規作成>プロジェクトを選択 Visual C++ プロジェクトからメイクファイル プロジェクトを選択 詳細を開いて、例えば以下のように…
Nemerleもマクロが強力でしたが、Booも負けてはいません。さて、次のようなBooのコードがあったとします。ファイル:tm.boo import System.Threading def wait(ms as int): print "..." * (ms / 1000) Thread.Sleep(ms) def Main(): print "1秒待つ" time: wa…
http://d.hatena.ne.jp/akiramei/20041210#p2の文字列連結エラーが最新のsvnリポジトリでは修正されたみたい。
次のような関数を用意し、引数が数値なら足し算、文字列なら連結、というように引数にoperator+を適用させたいとします。 def plus(x, y): return x + y ところが、これをコンパイルすると次のようなエラーが発生します。 BCE0051: Operator '+' can't be us…
BooのクラスはPythonよりもC#に近いです。 class Foo: // フィールドのデフォルトはprivate field1 = "field1" // プロパティのデフォルトはpublic Field1: get: return field1 set: field1 = value // 属性によるプロパティ [property(Field2)] field2 = "f…
import System.IO import Boo.IO def scanner(dir, glob, func as callable): for dname in Directory.GetDirectories(dir): scanner(dname, glob, func) for fname in Directory.GetFiles(dir, glob): for line in TextFile(fname): func(line) def Main(ar…
import System.Console def qsort(xs as (int)) as (int): return xs if len(xs) <= 1 return qsort(array(int, [x for x in xs[1:] if x < xs[0] ])) + xs[0:1] + \ qsort(array(int, [x for x in xs[1:] if x >= xs[0] ])) xs = (1,9,8,2,3,7,6,4,5,0) pri…
3行で書く。 import System.Console def qsort(xs as List) as List: return xs if len(xs) <= 1 return qsort([x for x as int in xs[1:] if x < cast(int,xs[0])]) + xs[0:1] + \ qsort([x for x as int in xs[1:] if x >= cast(int, xs[0])]) xs = [1,9,2…