我正在编写一个能够将字符串解析成方程式的解析器。
当我遇到符号时,说+
,我需要生成一个带两个输入并添加它们的函数。
虽然我可以简单地编写一个lambda函数来执行此操作,但为此目的编写函数似乎很愚蠢,而且我最终得到的地图如下:
map = {
'+': lambda a,b: a+b,
'-': lambda a,b: a-b,
# More symbols here
}
此外,我正在寻找are already defined in object的功能!这样,我可以做类似的事情:
map = {
'+': object.__add__,
'-': object.__sub__,
# More symbols here
}
但是,当我尝试上面的代码时,出现type object 'object' has no attribute '__add__'
错误。
如何参考我需要的功能?
答案 0 :(得分:3)
您是否尝试过操作员模块?
// Classes conforming to this protocol...
protocol CustomViewProvider {
typealias ViewType
}
// ... Will get customView accessor for free
extension CustomViewProvider where Self: UIViewController, Self.ViewType: UIView {
var customView: Self.ViewType {
return view as! Self.ViewType
}
}
// Example:
extension HomeViewController: CustomViewProvider {
typealias ViewType = HomeView
}
// Now, we can do something like
let customView: HomeView = HomeViewController().customView
用法:
import operator
operators = {"+": operator.add}