- versionは0.7a
- scalaz-streamではなくscalaz-concurrentにあるクラス
- scalaz-streamは、これと
Task
にかなり依存してるので、まずはこれらを理解することが重要
Task
にかなり依存してるので、まずはこれらを理解することが重要import scala.concurrent.Future | |
// def successful[T](result: T): Future[T] を使った場合 | |
// result を評価する時点でブロックされるので | |
// a b c の順に表示される | |
println("a") | |
val f1 = Future.successful { Thread.sleep(1000); println("b") } | |
println("c") | |
// def apply[T](body: ⇒ T)(implicit execctx: ExecutionContext): Future[T] |
ここに記載している情報は間違えている可能性があります。ご注意ください。
Embulkアウトプットプラグイン覚書
def foo(str) | |
result = str.scan(/(\*|\+|&|\||\d+)/).flatten | |
while result.size != 1 | |
result = hoge(result) | |
end | |
result.first | |
end | |
def hoge(ary) | |
%w(| & + *).each do |op| |
data = [ | |
# [ id, input, expected ], | |
[ 0, "4*5+6&7|8", "44" ], | |
[ 1, "15*5", "75" ], | |
[ 2, "15+5", "20" ], | |
[ 3, "15&5", "5" ], | |
[ 4, "15|5", "15" ], | |
[ 5, "30*15*5", "2250" ], | |
[ 6, "30*15+5", "600" ], | |
[ 7, "30*15&5", "150" ], |
input = [ | |
# [ id, input, expected ], | |
[ 0, "4*5+6&7|8", "44" ], | |
[ 1, "15*5", "75" ], | |
[ 2, "15+5", "20" ], | |
[ 3, "15&5", "5" ], | |
[ 4, "15|5", "15" ], | |
[ 5, "30*15*5", "2250" ], | |
[ 6, "30*15+5", "600" ], | |
[ 7, "30*15&5", "150" ], |
# 優先順位は変わらないので、優先順位にそってメッソドを再定義する | |
# メソッドが入れ替わっているので、式内の演算子も置換で入れ替える。 | |
# | |
# ↑優先順位高 | |
# | ビット or | |
# & ビット and | |
# + 加算 | |
# * 乗算 | |
# ↓優先順位低 | |
# |
#!/usr/bin/env ruby | |
BIT_OR = '\|' | |
BIT_AND = '\&' | |
ADD = '\+' | |
MULTIPLATION = '\*' | |
input = ARGV[0] | |
[BIT_OR, BIT_AND, ADD, MULTIPLATION].each do |operator| |