zoukankan      html  css  js  c++  java
  • Swift 1.0: missing argument label 'xxx' in call

    注意,这个问题是在swift1.0时发生的,swift2.0中,好像统一了function 和 method 的定义,具体待正式版发布后研究一下!

    今天在使用swift时发现,写的func总是要求写出第二个参数的外部变量名,很不理解,感觉和书上说的function不一样,查了一下,终于发现了原因:写在class内部的function叫做method,是特殊的functoin,系统会自动补上外部变量名,参看以下连接 http://stackoverflow.com/questions/24050844/swift-missing-argument-label-xxx-in-call

    防止连接失效,截取部分内容如下:

    One possible reason is that it is actually a method. Methods are very sneaky, they look just like regular functions, but they don't act the same way, let's look at this:

    func funFunction(someArg: Int, someOtherArg: Int) {
        println("funFunction: (someArg) : (someOtherArg)")
    }
    
    // No external parameter
    funFunction(1, 4)
    
    func externalParamFunction(externalOne internalOne: Int, externalTwo internalTwo: Int) {
        println("externalParamFunction: (internalOne) : (internalTwo)")
    }
    
    // Requires external parameters
    externalParamFunction(externalOne: 1, externalTwo: 4)
    
    func externalInternalShared(#paramOne: Int, #paramTwo: Int) {
        println("externalInternalShared: (paramOne) : (paramTwo)")
    }
    
    // The '#' basically says, you want your internal and external names to be the same
    
    externalInternalShared(paramOne: 1, paramTwo: 4)
    

    Now here's the fun part, declare a function inside of a class and it's no longer a function ... it's a method

    class SomeClass {
        func someClassFunctionWithParamOne(paramOne: Int, paramTwo: Int) {
            println("someClassFunction: (paramOne) : (paramTwo)")
        }
    }
    
    var someInstance = SomeClass()
    someInstance.someClassFunctionWithParamOne(1, paramTwo: 4)
    

    This is part of the design of behavior for methods

    Apple Docs:

    Specifically, Swift gives the first parameter name in a method a local parameter name by default, and gives the second and subsequent parameter names both local and external parameter names by default. This convention matches the typical naming and calling convention you will be familiar with from writing Objective-C methods, and makes for expressive method calls without the need to qualify your parameter names.

  • 相关阅读:
    程序员获取编程灵感的10 种方式
    修改Windows远程桌面3389端口
    修改Windows远程桌面3389端口
    JS 开发常用工具函数
    JS 开发常用工具函数
    IT公司老板落水,各部门员工怎么救
    IT公司老板落水,各部门员工怎么救
    如何优雅地给妹子优化电脑(Windows)?
    如何优雅地给妹子优化电脑(Windows)?
    程序员,你恐慌的到底是什么?
  • 原文地址:https://www.cnblogs.com/breezemist/p/4326644.html
Copyright © 2011-2022 走看看