Boo

duckyオプション

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 コンパイルすると…

BooでDirectX

Boo

ティーポットを表示するだけのサンプル。ウィンドウをリサイズするだけで表示がおかしくなります。(^^; import System import System.Drawing import System.Windows.Forms import Microsoft.DirectX import Microsoft.DirectX.Direct3D class MyForm (Form)…

変更点の調査

Boo

相変わらず資料不足なのでチェックインログやテストケースのソースを読むしか新機能を調べる方法がありません。(^^;・ビット演算 サポートされていなかったと記憶していますが、今は使えるようになりました。Booでは論理演算にはor,andを、ビット演算は|,&を…

在庫処分

Boo

・Booチュートリアル クラスの説明のために簡単なオブジェクト指向入門を書いていて挫折。2ヶ月くらい放置状態で今後も状況は改善されそーにないので中途半端ですが出してしまいます。最近はオブジェクト指向に対して後ろ向きでして、変数管理の手法の1つ…

チュートリアル更新

Boo

Boo チュートリアルを更新しました。5章データ構造と、6章ソースファイルとアセンブリを追加しています。そろそろ長くなってきたので読みやすい形式にしたいんですが、手打ちHTMLはちょっとやりたくないなぁ。(^^; なんか便利なソフトないかしら・・・(追記)…

シリアライズ

Boo

Booの予約語を見ながら言語を調査しているのですが、今回はtransientです。辞書を引くと 一時的な,つかのまの,はかない とあるので、NonSerialized属性みたいなものかと予想したら、そのとおりでした。(^^; import System.IO import System.Runtime.Serializ…

チュートリアル

Boo

BooはPython風の構文を採用した言語ですが、.NET版のPythonではありません。Pythonといえばインデントによるブロックが特徴的なためインデントによるブロックを使っていると、Pythonとかなり互換性が高そうに見えてしまいますが気のせいです。(^^;Pythonには…

NCoverでテスト

Boo

そういえば、一度も動かしたことが無かったので実験です。対象は昨日のCalcです。これをCalc.dllとしてビルドし、コイツを呼び出すテストモジュールを作成します。 ファイル:calctest.boo import Calc def Main(): calc = Calc() print calc.Add(1, 2) print…

NUnitでテスト

Boo

Booではカスタム属性をサポートしているので、他の言語同様にNUnitを使えます。例えば、次のようなクラスがあったとします。 ファイル:calc.boo namespace Calc import System import System.Collections enum MemOpe: None Add Subtract class Calc: mem = …

VS.NETでデバッグ

Boo

メイクファイル プロジェクトを作れば、VS.NETでもデバッグ出来ましたね。(^^;(追記) 手順 VS.NETを起動、メニューのファイル>新規作成>プロジェクトを選択 Visual C++ プロジェクトからメイクファイル プロジェクトを選択 詳細を開いて、例えば以下のように…

Booでマクロ

Boo

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…

revision 1333

Boo

http://d.hatena.ne.jp/akiramei/20041210#p2の文字列連結エラーが最新のsvnリポジトリでは修正されたみたい。

duck typing

Boo

次のような関数を用意し、引数が数値なら足し算、文字列なら連結、というように引数にoperator+を適用させたいとします。 def plus(x, y): return x + y ところが、これをコンパイルすると次のようなエラーが発生します。 BCE0051: Operator '+' can't be us…

クラスの使い方

Boo

BooのクラスはPythonよりもC#に近いです。 class Foo: // フィールドのデフォルトはprivate field1 = "field1" // プロパティのデフォルトはpublic Field1: get: return field1 set: field1 = value // 属性によるプロパティ [property(Field2)] field2 = "f…

Closureのサンプル

Boo

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…

続Booでクイックソート

Boo

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…

Booでクイックソート

Boo

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…