ObjC/Swift 一些不喜欢的 swift 的地方

ane · 2014年06月07日 · 最后由 dorentus 回复于 2014年06月07日 · 2317 次阅读

.1.函数作为返回值时候的写法

func makeIncrementer() -> (Int -> Int) {
    func addOne(number: Int) -> Int {
        return 1 + number
    }
    return addOne
}

既然函数作为返回值,那么外函数返回的必然是内函数的类型。何必要->(int->int)这样的繁琐的声明,直接->int不好吗?或者->(->int)or ->->int。 但是后来一想,他的意思应该是->(参数int ->返回值int)这样就合理了

.2. EquilateralTriangle到现在也看不出实际作用?求教育,求指导。

.3.方法的参数名称除了在内部使用外还可以在外部使用(第一个参数除外)这个功能,依旧想象力匮乏,不太明白有什么强大的地方。

共收到 5 条回复

我以为这个是返回一个是返回值是整数并且参数是整数的函数?

  1. 我会告诉你可以去掉括号这么写吗? func makeIncrementer() -> Int -> Int { ... }
  2. 等边三角形模型, 画图或许有用...
  3. 参数名称在外部使用 obj.f(a, g: b) , 对应调用 objc 的 API [obj f:a g:b], 所以现有的库都可以直接转化成 swift 的调用

1是类型推导的惯用表示法。

->理解成函数的参数和返回值的分隔符

.1 写成 func makeIncrementer() -> Int 的话就变成声明返回值是 Int 而不是一个 (Int) -> Int 类型的函数了

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册