4

boo と Python の類似点は表面的なものであることはわかっていますが、次の Python コードと同等のコードを boo で実行するにはどうすればよいでしょうか?

a = 'a'
del a
a = 1

私はもう試した

a = 'a'
a = null
System.GC.Collect()                                                                                                                                                    
System.GC.WaitForPendingFinalizers()
a = 1

しかし、ブーイッシュは、「int」を「string」に変換できないと言っています。

ダックタイプを使わないのがポイント。それは可能ですか?

編集コメントの提案に従って、デルを関数からステートメントに変更しました。

4

2 に答える 2

3

これは Boo では不可能です。Boo は暗黙的な静的型付けを使用します。したがって、すべての変数は、スコープ内の最初の割り当てに基づいて厳密に型指定されます。一度割り当てられると、変数の型は変更できません。

ガベージ コレクションは、参照されなくなったヒープ上のオブジェクトがヒープから削除されることを保証しますが、各言語の個々の変数スコープには影響しません。Boo では、変数はそれが定義されたブロックの最後までスコープ外になりません。

Boo でのダック タイピングはコンパイラによって処理されます。コンパイラは "オブジェクト" の静的な型を割り当て、ランタイム コードを使用して、基になる .NET ランタイムが汎用オブジェクトと見なすもののダックネスを実行します。

于 2011-06-07T13:11:00.403 に答える
0

オブジェクトとして宣言できます

オブジェクトとしてのa = "letter_a"

「文字a」を印刷する

a = 1 印刷 a 1

パイソンよりブーが好き!

于 2011-07-18T15:28:02.753 に答える