2010-08-04 :-)
_ 朝ッ
0520 起床
_ ,
@mizchi が居た聖剣伝説 LoM
_ 汝
いまなんじ?
_ [Python][デザインパターン][Iterator]Python でデザインパターン - Iterator
書き換え [ 20090512#p07 ]
Python で Iterator を実装するにはイテレータを使う方法とジェネレータを使う方法があるようだ。ジェネレータならば yield するだけなのでこれは Ruby に近い書き方になるのか。
イテレータ版
#!/usr/bin/python
# -*- coding: utf-8 -*-
# Head First デザインパターンを写経する - 9章 Iterator パターン - ヨタの日々(2009-05-12)
# http://www.area51.gr.jp/~rin/diary/?date=20090512#p07
# イテレータ版
class Menu:
def __init__(self, item):
self.item = item
self.count = len(item)
def __iter__(self):
return self
def next(self):
if self.count == 0:
raise StopIteration
i = len(self.item) - self.count
self.count -= 1
return self.item[i]
def main():
menuItems = [ "K&Bのパンケーキ朝食", "通常のパンケーキ朝食", "ワッフル"]
menu = Menu(menuItems)
for n in menu:
print n
main()
ジェネレータ版
#!/usr/bin/python
# -*- coding: utf-8 -*-
# Head First デザインパターンを写経する - 9章 Iterator パターン - ヨタの日々(2009-05-12)
# http://www.area51.gr.jp/~rin/diary/?date=20090512#p07
# ジェネレータ版
def menu(item):
for index in range(len(item)):
yield item[index]
def main():
menuItems = [ "K&Bのパンケーキ朝食", "通常のパンケーキ朝食", "ワッフル"]
for n in menu(menuItems):
print n
main()
実行結果は両方ともこう
K&Bのパンケーキ朝食 通常のパンケーキ朝食 ワッフル
ref.
[ツッコミを入れる]



