2008-11-01から1ヶ月間の記事一覧

@

》作業中です《 ★ 初級/入門 ★★ 初級/基礎 ★★★ 初級/応用 ★★★★ 中級 ★★★★★ 上級 ※ ここでの分類(原則として)は、次のように設定してあります。 初級 中級 上級 既存のプログラミング言語や開発環境を利用してアプリケーション開発をしているみなさん。 既…

Python.use(better, src=”PyPy”) 記事一覧

|中級篇| Python.use(better, src=”PyPy”) # ソースコードの歩き方《中級篇》 ソースコードの歩き方《PyPy1.2》 《著》小粒ちゃん@湘南組、小粒ちゃん@博多組《監修》小泉ひよ子とタマゴ倶楽部第1版♪2008/11/25 ● 第2版♪2010/04/29|関連記事| ※ PyPy1.…

DI

↑ TOP ↑ D ↑ DI ♪ dict Built-in Types — Python 3.7.3 documentation ¶ 5.8. Mapping Types — dict Python 3.1 (r31:73578, Jun 27 2009, 21:49:46) [GCC 4.0.1 (Apple Inc. build 5493)] on darwin Type "copyright", "credits" or "license()" for more i…

D

↑ TOP ↑ D |DI| Last updated♪2010/07/23 ♪ def 7. Compound statements — Python v3.1.5 documentation ¶ 7.6. Function definitions¶ Python.use(better) 2002-04-11 Python.use(better) #def: 関数 -- オブジェクト 2002-04-10 Python.use(better) #def…

イディオム:StringBuilder

静的メソッド SetToString の本体は、2つの処理(前半/後半)に大別できます。 public static string SetToString(object set, IEnumerable items) { string setTypeStr; ... StringBuilder sb = new StringBuilder(); ... }前半では、与えられた引数から型…

ソースコード:SetHelpers.SetToString()

静的クラス SetHelpers では、クラス SetCollection/FrozenSetCollection で共有するメソッドを支援する、補助的な処理群(Helpers)を実現します。 /// /// Contains common set functionality between set and forzenSet /// static class SetHelpers { pu…

要素を区切るときに

要素を含まないか、1つだけ含むときには、カンマ「,」で区切る必要はありません。そのため、foreach ループでは、少し工夫が必要です。すると、次のような構造が見えてきます。 string comma = ""; foreach (...) { sb.Append(comma); ... comma = ", "; }…

要素を含まないときに

要素を含まないときには、括弧 ([]) で括るだけです。 sb.Append("(["); ... foreach (object o in items) { ... } sb.Append("])");対象となる IEnumerable items が、要素を含まないときには、foreach ループの本体を実行しません。そのため、作業領域 sb …

インスタンスの文字列表現

リターン値を得るために、変数 sb が作業領域 StringBuilder を保持します。StringBuilder を使うと、文字列を編集(追加/削除/置換/挿入)したいときに便利です。すると、次のような構造が見えてきます。 StringBuilder sb = new StringBuilder(); ... sb.A…

インスタンスの型情報

前半には、次に示す典型的な C# のイディオムが記述してあります。 string s; Type t = obj.GetType(); if (t == typeof(T1)) { s = "t1"; } else if (t == typeof(T2)) { s = "t2"; } else { s = ... // その他 }このイディオムに照らし合わせて見ると、与…

ソースコードの歩き方《IronPython》Set.__str__ 3/3

《Previous|3/3|Next》 Python.use(better, src=”IronPython”) # ソースコードを散策する《記事一覧》

ソースコード:X.ToString()

《関連記事》__str__ (メソッド set.__str__/frozenset.__str__ に相当する)メソッド ToString の定義を含む、ソースコードの断片を次に示します。 # IronPython-1.1.2/Src/IronPython/Runtime/Set.cs namespace IronPython.Runtime { /// Common interfac…

組み込み関数:str()

ここで、set.__str__ のヘルプ情報を確認します。>>> help(set.__str__) Help on wrapper_descriptor:__str__(...) x.__str__() str(x)これを見て、set.__str__ は、組み込み関数 str の動作を規定しているのが分かります。実際に、その動作を確認してみまし…

ソースコードの歩き方《IronPython》Set.__str__ 2/3

《Previous|2/3|Next》 Python.use(better, src=”IronPython”) # ソースコードを散策する《記事一覧》

set 型のインスタンス:同じ型の要素

IronPython のソースコードを理解するための布石として、実際に、その動作を確認してみましょう。>>> set() set([])型名 set に演算子 () を適用する(関数呼び出し)と、set 型のインスタンスが得られます。引数を省略すると、要素を持たない「空集合」が得…

set 型のインスタンス:ハッシュ値

《関連記事》VDM++, 集合を要素とする集合 - 続・ひよ子のきもち 「集合を要素に持つ」集合も表現できます。ただし、集合の要素はハッシュ値を持つ(hashable)必要があります。>>> set([set(e) for e in "ABC"])Traceback (most recent call last): File ""…

set 型のインスタンス:任意の型の要素

集合の要素には、任意の型のインスタンスを混在できます。>>> it = 3,"ABC",True,None >>> set(it) set([None, True, 3, 'ABC']) >>> for e in it: print type(e) 集合の要素には「異なる型」のインスタンスを混在できるのが分かります。

set 型のリテラル表現

set 型は、集合に相当します。集合は、順序を持たず重複しない要素群を表現したものです。set 型は、list/dict のような(文字どおりの)リテラル表現を持ちません。そこで、set 型のヘルプ情報を確認します。>>> help(set) Help on class set in module __b…

ソースコードの歩き方《IronPython》Set.__str__ 1/3

《Previous|1/3|Next》 Python.use(better, src=”IronPython”) # ソースコードを散策する《記事一覧》 メソッド Set.__str__:IronPython 篇 《著》本間りす《監修》小泉ひよ子とタマゴ倶楽部 set 型とともに、関係の深い frozenset 型についても解説しま…

G

↑TOP|GL| ♪ dict.get → dict 5. Built-in Types — Python v3.1.5 documentation ¶ dict.get 2002-04-08 Python.use(better) 課題:ヒストグラム 2002-03-08 Python.use(better) #組み込み型 -- dict.get 2003-03-13 Python はじめました:dict.get 値の獲…

情報を表示するためのコントロールは、コンテンツを1つだけを含むものと、複数の項目を含むものとに大別できます。また、コンテンツには、テキストだけでなく、他のコントロールも含まれます。 System.Windows.FrameworkElement +-- System.Windows.Control…

コンテンツの管理

単一 複数 @ Content Items @ Child Children Content は、単一の項目からなる、任意のオブジェクトを格納します。 Items は、複数の項目からなる、任意のオブジェクトを格納します。Child は、単一の子要素 UIElement を格納します。 Children は、複数の子…

《こちらに移動中です》

C#.use(better, IronPython=”WPF”) 《記事一覧》 コンテンツ

情報を表示するためのコントロールは、コンテンツを1つだけを含むものと、複数の項目を含むものとに大別できます。また、コンテンツには、テキストだけでなく、他のコントロールも含まれます。 System.Windows.FrameworkElement +-- System.Windows.Control…

コンテンツの管理

単一 複数 @ Content Items @ Child Children Content は、単一の項目からなる、任意のオブジェクトを格納します。 Items は、複数の項目からなる、任意のオブジェクトを格納します。Child は、単一の子要素 UIElement を格納します。 Children は、複数の子…

《こちらに移動中です》

C#.use(better, IronPython=”WPF”) 《記事一覧》 コンテンツ

まとめ

複合オブジェクト/単一オブジェクトを一様に管理するのに、Composite パターンを適用するとともに、それを実現するための手段として、TreeView を導入する方法を紹介しました。 TreeView を導入すると、前述した事例のように、フォルダー/ファイルを判定する…

2c)機能の実現:Composite

Composite::Composite では、複合オブジェクト(合成要素)に固有のプロトコルを規定します。

クラス FileSystem:Component

## -------------------- # Composite::Component class FileNode(TreeViewItem): def __init__(self, name): self.Header = name self.size = 0 属性 self.Header は、親クラスから継承したもので、フォルダー/ファイルの名前を管理します。属性 self.size …

適用事例: Composite パターン

GoF

古典的な〈GoF〉Composite パターンに代えて、木構造を持つオブジェクトの集合体を管理したいときに、既存のコントロールを活用した事例を紹介します。すると、複合/単一オブジェクトの違いを意識せずに、オブジェクトの集合体を一様に扱えるようになります…