主にプログラミングに関して。Python, .NET Framework(C#), JavaScript, その他いくらか。
記事にあるサンプルやコードは要検証。使用に際しては責任を負いかねます

スポンサーサイト

                
tags:
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Boo: Pythonとの相違点

                
Booでアプリケーションを作っても問題なく動作することが確認できた。UnityコーディングにBooが使えることを合わせて考えると、Booを学ぶ意義は十分に確保された。Booインタープリタを叩きながら、PythonとBooの相違部分を確かめつつ、Booへの理解を深める。
参考:http://boo.codehaus.org/Gotchas+for+Python+Users

さわってみて感じたところを述べてみる。インデントによる制御構造を持つのでパッとコードを見ると、Pythonに似ているように見えていた。ところがその制御構造以外の部分に触れてみると、C#を手本にしていると考えられる部分がぼろぼろ出てくる。言ってみるなら、Pythonの皮をかぶったC#。

中身はIronPythonよりずっとC#になっていると思う。まず基本的な型から。
print "mozi".GetType()
print 1.GetType()
print 1L.GetType()
print true.GetType()

上から順に、System.String、System.Int32、System.Int64、System.Booleanという出力が得られる。GetTypeメソッドで型が得られるところからしてまんまC#。

Pythonで文字列にならぶ文字を大文字化しようとするなら、upperメソッドを使う。Booにはそんなものはない。ToUpperメソッドを使う。やっぱりC#。
> "mozi".ToUpper()
"MOZI"


IronPythonでは数値の評価を以下のように書ける。
3 < x < 10

BooがPythonライクならこれはできて欲しいが、現実にはダメ。"3 < x"を行った後で、"bool < 10"をおこなうという連続処理をおこなうため、bool値とInt値を比べられるか! というエラーを吐き出す。論理和、論理積を用いて書く。ちなみに||や&&などによる短絡演算はない。
(3 < x) | (x < 10)
1 & 0


型は基本的に静的だ。一度型を得た変数に、別の型の値を入れようするとエラーが発生する。
a = 1
a = "mozi"

上記二行を連続して行うとエラー。ただダックタイピングは可能で下記はOK。
a as duck = 1
a = "mozi"


このぐらいがとりあえずさわってみたところでの、BooのPythonよりむしろC#っぽいところ。あとのこまごましたところは公式で。
参考:http://boo.codehaus.org/Gotchas+for+Python+Users
            

コメントの投稿

非公開コメント

プロフィール

hMatoba

Author:hMatoba
Github

最新記事
リンク
作ったものなど
月別アーカイブ
カテゴリ
タグリスト

検索フォーム
Amazon
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。