4. Guraとはなにか
プログラム中で頻繁に出てくる 繰返し処理
for (i = 0; i < 10; i++) {
}
for x in range(10):
people.each do |person|
end
hoge
冗長な制御構文なしで処理できないか?
Copyright (C) 2014 ypsitau 4/49
20. 基本的な仕様(3) オブジェクト指向
コンストラクタ
インスタンス生成・メソッド呼出し
Copyright (C) 2014 ypsitau 20/49
クラス定義
Fruit = class {
__init__(name:string, price:number) = {
this.name = name
this.price = price
}
Print() = {
printf('%s %dn', this.name, this.price)
}
}
fruit = Fruit('Orange', 90)
fruit.Print()
21. 基本的な仕様(3) オブジェクト指向
Copyright (C) 2014 ypsitau 21/49
継承
A = class {
__init__(x, y) = {
// any jobs
}
}
B = class(A) {
__init__(x, y, z) = {|x, y|
// any jobs
}
}
ベースクラス
コンストラクタへの引数
40. イテレータ処理(4) 繰返し制御構文
繰返し制御構文から
イテレータイテレータを生成
x = for (…):iter {
アトリビュート :iter をつける
Copyright (C) 2014 ypsitau 40/49
繰返し制御構文
生成値
繰返し処理
}
繰返し処理の評価値が
イテレータの要素値になる
for
repeat
while
cross
41. イテレータ処理(4) 制御構文イテレータ
制御構文イテレータの使用例
n = 0
x = for (i in 0..5):iter {
Copyright (C) 2014 ypsitau 41/49
n += i
}
この時点では何も実行しない
println(x)
結果を表示: 0 1 3 6 10 15
42. イテレータ処理(4) 制御構文イテレータ
素数を生成するイテレータ
Copyright (C) 2014 ypsitau 42/49
prime() = {
p = []
for (n in 2..):xiter {
if (!(n % p.each() == 0).or()) {
p.add(n)
n
}
}
}
primes = prime()
素数(2, 3, 5, 7..)を返すイテレータ