【发布时间】:2018-11-24 04:32:56
【问题描述】:
indirect enum FormExpression {
case float(Float)
case reference(String,Int)
case infix(FormExpression,String,FormExpression)
case function(String,FormExpression)
}
extension FormExpression {
static var floatParser:FormParser<FormExpression> {
return { FormExpression.float($0) }<^>float
}
}
infix operator <^> : SequencePrecedence
func <^><A,B>(lhs:@escaping(A)->B,rhs:FormParser<A>) -> FormParser<B> {
return rhs.map(lhs)
}
这是我练习闭包和函数式 Swift 的代码。现在它显示一个
错误 - '无法将类型 '(Float) -> FormExpression' 的值转换为 预期参数类型'(_) -> FormExpression''
。而且我试了好几次,还是不知道怎么办。希望有人能帮忙解决一下,解释一下原因。谢谢
【问题讨论】:
-
<^>运算符从何而来?您是否在使用任何 3rd 方框架? -
infix operator <^> : SequencePrecedence func <^><A,B>(lhs:@escaping(A)->B,rhs:FormParser<A>) -> FormParser<B> { return rhs.map(lhs) } -
这是练习项目的地址:(github.com/objcio/functional-swift)。我修改了一些代码
let float = digit.many1.map { Float(String($0))! } -
@MartinR,我添加了解释
-
感谢之前提过建议的朋友,第一次问,没看懂问题的格式。这是我的问题,对不起