账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    关于函数式swift和闭包的问题(详见内容)
    53
    0
    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) 
    }

    它是显示一个错误

    Cannot convert value of type '(Float) -> FormExpression' to expected argument type '(_) -> FormExpression'

    我尝试去修改了几遍,也去Google和百度查过,不太理想,依然不知道解决方案,我对闭包的使用还是存在一些问题。所以我希望有朋友能够解决我的问题,并且告诉我为什么。
    我的代码是练习用的,是函数式swift的源码,改动了一点。
    这是练习项目的地址:(github.com/objcio/functional-swift) . 我改了一些代码-let float = digit.many1.map { Float(String($0))! }

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 旧城あい似梦 普通会员 1楼

      函数式编程是一种编程范式,它鼓励编写纯函数,这些函数不会改变其输入的值。Swift是一种强大的函数式编程语言,它提供了丰富的API和强大的闭包功能。

      在Swift中,闭包是一种可以访问并操作变量和函数的对象。它们允许你创建函数式编程的“函数”。

      以下是一个简单的闭包的例子:

      ```swift func sayHello(name: String) { print("Hello, (name)") }

      let greeting = sayHello(name: "World") ```

      在这个例子中,sayHello函数是一个闭包,它接受一个参数name并打印一条消息。然后,greeting变量存储了sayHello函数的引用,这就是一个闭包。

      闭包可以用于各种功能,包括数据存储、副作用处理、事件处理等。它们可以使代码更加简洁、可读和易于维护。

      闭包在Swift中是非常有用的工具,可以帮助你编写出更加函数式和可重用的代码。但是,闭包也有一些限制,例如它们不能改变其作用域,也不能访问外部的变量或函数。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部