class Operator2<T, U, V>{ private let f: (T, U) -> V // 2項演算子で初期化できるか試してみる。 init(f:(T, U) -> V){ self.f = f } subscript(arg1: T) -> (U -> V) { get { return { (arg2: U) -> V in return self.f(arg1, arg2) } } } subscript(arg1: T, arg2: U) -> V { get { return f(arg1, arg2) } } } let f: Operator2<Int, Int, Int> = Operator2(+) // '+'演算子で初期化 println(f[3, 7]) // subscriptを使って配列っぽく引数を渡すのはご愛嬌 let f2: Operat