練習みたいなもんです。
これを使ってどうこうみたいな話ではありませんのであしからず。
classで
swift
import Cocoa
class SomeOps {
func add(a:Int,b:Int) -> Int { return a+b }
func sub(a:Int,b:Int) -> Int { return a-b }
func mul(a:Int,b:Int) -> Int { return a*b }
func sur(a:Int,b:Int) -> Int { return a%b }
}
let ops = SomeOps()
ops.add(1,b:2)
ops.sub(1,b:2)
ops.mul(1,b:2)
ops.sur(1,b:2)
普通な感じ。
enumで
swift
import Cocoa
enum SomeOps {
case add,sub,mul,sur
func proc(a:Int,b:Int)->Int {
switch self {
case .add: return a+b
case .sub: return a-b
case .mul: return a*b
case .sur: return a%b
}
}
}
SomeOps.add.proc(1,b:2)
SomeOps.sub.proc(1,b:2)
SomeOps.mul.proc(1,b:2)
SomeOps.sur.proc(1,b:2)
期待した形にはならなかった・・・。
僕が何か遠回りをしてるのかも。
funcを返すfuncで
swift
import Cocoa
func makeSomeOps() -> Dictionary<String,(Int,Int) -> Int> {
return [
"add":{ (a:Int,b:Int) -> Int in return a+b },
"sub":{ (a:Int,b:Int) -> Int in return a-b },
"mul":{ (a:Int,b:Int) -> Int in return a*b },
"sur":{ (a:Int,b:Int) -> Int in return a%b },
]
}
let ops = makeSomeOps()
ops["add"]!(1,2)
ops["sub"]!(1,2)
ops["mul"]!(1,2)
ops["sur"]!(1,2)
綺麗な気はするけど別に使いたくはならない。
b:
って書かなくて良いところはいいかも。