• 尽管print声明不会在设备的console里打印,但它们甚至在Release...你可以通过定义自己的全局级别的print方法来重写Swiftprint方法,并且使用@autoclosure修饰器推迟其参数求值,就像assert做的那样:func print(_ i

    尽管print声明不会在设备的console里打印,但它们甚至在Release版本和设备上也会执行,这些执行可能会带来一些耗费。

    特别的,它的参数仍然被模拟求值。如果你的print调用只有一个参数,这里有一个变通方法。你可以通过定义自己的全局级别的print方法来重写Swift的print方法,并且使用@autoclosure修饰器推迟其参数求值,就像assert做的那样:

    func print(_ item: @autoclosure () -> Any,
            separator: String = " ", terminator: String = "\n") {
                #if DEBUG
                Swift.print(item(), separator:separator, terminator: terminator)
                #endif
    }

    当你调用print(myExpensiveFunction())时,这个定制print方法被调用。这意味着在闭包中包裹的myExpensiveFunction()方法不会被立即求值。

    如果你只在Swift的Debug配置标志中定义了-DDEBUG,那么在Release配置下构建的app中,myExpensiveFunction()将永远不会被求值,因为item()不会被调用。

    展开全文
  • Swift 2.0中的print函数有4种重载形式:  print(_:)。输出变量或常量到控制台,并且换行。  print(_:_:)。输出变量或常量到指定类型的流中,并且换行。  print(_:appendNewline:)。输出变量或常量到控制台...
    Swift 2.0中的print函数有4种重载形式:
     print(_:)。输出变量或常量到控制台,并且换行。
     print(_:_:)。输出变量或常量到指定类型的流中,并且换行。
     print(_:appendNewline:)。输出变量或常量到控制台,appendNewline参数是布尔值,true表示换行,false表示不换行。
     print(_:_:appendNewline:) 。输出变量或常量指定类型的流中,appendNewline参数是布尔值,true表示换行,false表示不换行。
    展开全文
  • Swift中Debug和Release两种状态下print()函数调试切换 在编写项目的过程中,我们常常会打印信息到控制台,通过打印的信息来判断代码的流程或者正确性。但是这些信息仅仅在Debug的状态下需要,一旦版本发布之后,我们...

    Swift中Debug和Release两种状态下print()函数调试切换

           在编写项目的过程中,我们常常会打印信息到控制台,通过打印的信息来判断代码的流程或者正确性。但是这些信息仅仅在Debug的状态下需要,一旦版本发布之后,我们就不需要这些打印操作了。如果是在发布版本之前,程序员手动一个个的去注释或者删除打印操作,这必然是一件浪费时间而又麻烦的事情。如果不处理,上线的版本运行在手机中,这些打印操作势必会影响一些性能的。下面就记录一下在项目中如何处理。

    一、在OC代码中,我们常常会通过一个宏定义来控制打印操作

    #ifdef DEBUG
    #define MyLog(...) NSLog(__VA_ARGS__)
    #else
    #define MyLog(...)
    #endif

    二、在Swift中我一般使用下面两种方法来控制

    1、自己写一个工具类 DebugLogTool, 通过控制isDebug 的值来控制打印情况,有点点不智能哈

    2、通过配置工程文件,加上工具类 DebugLogTool

    展开全文
  • Swift 2.0中的print函数有4种重载形式: print(_:)。输出变量或常量到控制台,并且换行。 print(_:_:)。输出变量或常量到指定类型的流中,并且换行。 print(_:appendNewline:)。输出变量或常量到控制台,...

    Swift 2.0中的print函数有4种重载形式:

    • print(_:)。输出变量或常量到控制台,并且换行。

    • print(_:_:)。输出变量或常量到指定类型的流中,并且换行。

    • print(_:appendNewline:)。输出变量或常量到控制台,appendNewline参数是布尔值,true表示换行,false表示不换行。

    • print(_:_:appendNewline:)。输出变量或常量指定类型的流中,appendNewline参数是布尔值,true表示换行,false表示不换行。

     

     本文转自 tony关东升 51CTO博客,原文链接:http://blog.51cto.com/tonyguan/1746078,如需转载请自行联系原作者

    展开全文
  • Swift 函数

    2017-08-30 16:17:21
    Swift 函数用来完成特定任务的独立的代码块。 Swift使用一个统一的语法来表示简单的C语言风格的函数到复杂的Objective-C语言风格的方法。 函数声明: 告诉编译器函数的名字,返回类型及参数。 函数定义: 提供了函数...

    Swift 函数用来完成特定任务的独立的代码块。
    Swift使用一个统一的语法来表示简单的C语言风格的函数到复杂的Objective-C语言风格的方法。

    • 函数声明: 告诉编译器函数的名字,返回类型及参数。
    • 函数定义: 提供了函数的实体。

    Swift 函数包含了参数类型及返回值类型:

    一、函数定义

    Swift 定义函数使用关键字 func。
    定义函数的时候,可以指定一个或多个输入参数和一个返回值类型。
    每个函数都有一个函数名来描述它的功能。通过函数名以及对应类型的参数值来调用这个函数。函数的参数传递的顺序必须与参数列表相同。
    函数的实参传递的顺序必须与形参列表相同,-> 后定义函数的返回值类型。

    1、语法

    func funcname(形参) -> returntype
    {
       Statement1
       Statement2
       ……
       Statement N
       return parameters
    }

    2、实例

    func person(age: Int, name: String) -> String {
        return "\(name): \(age)"
    }
    print(person(age: 10, name: "不二"))

    输出:

    不二: 10

    二、函数调用

    我们可以通过函数名以及对应类型的参数值来调用函数,函数的参数传递的顺序必须与参数列表相同。

    print(returnStr(str: "输出"))
    func returnStr(str: String) -> String {
        return str
    }

    三、函数参数

    函数可以接受一个或者多个参数,这些参数被包含在函数的括号之中,以逗号分隔。

    func person(age: Int, name: String) -> String {
        return "\(name): \(age)"
    }

    四、不带参数函数

    1、语法

    func funcname() -> datatype {
       return datatype
    }

    2、实例

    func printSome() {
        print("我没有用")
    }

    五、元组作为函数返回值

    函数返回值类型可以是字符串,整型,浮点型等。
    元组与数组类似,不同的是,元组中的元素可以是任意类型,使用的是圆括号。
    你可以用元组(tuple)类型让多个值作为一个复合值从函数中返回。

    func minMax(array: [Int]) -> (min: Int, max: Int) {
        var currentMin = array[0]
        var currentMax = array[0]
        for value in array[1..<array.count] {
            if value < currentMin {
                currentMin = value
            } else if value > currentMax {
                currentMax = value
            }
        }
        return (currentMin, currentMax)
    }
    
    let bounds = minMax(array: [8, -6, 2, 109, 3, 71])
    print("最小值为 \(bounds.min) ,最大值为 \(bounds.max)")
    最小值为 -6 ,最大值为 109

    如果你不确定返回的元组一定不为nil,那么你可以返回一个可选的元组类型。
    你可以通过在元组类型的右括号后放置一个问号来定义一个可选元组,例如(Int, Int)?或(String, Int, Bool)?
    注意:
    可选元组类型如(Int, Int)?与元组包含可选类型如(Int?, Int?)是不同的.可选的元组类型,整个元组是可选的,而不只是元组中的每个元素值。

    func minMax(array: [Int]) -> (min: Int, max: Int)? {
        if array.isEmpty { return nil }
        var currentMin = array[0]
        var currentMax = array[0]
        for value in array[1..<array.count] {
            if value < currentMin {
                currentMin = value
            } else if value > currentMax {
                currentMax = value
            }
        }
        return (currentMin, currentMax)
    }
    if let bounds = minMax(array: [8, -6, 2, 109, 3, 71]) {
        print("最小值为 \(bounds.min),组大值为 \(bounds.max)")
    }

    六、没有返回值函数

    func printSome() {
        print("我没有用")
    }

    七、函数参数名称

    函数参数都有一个外部参数名和一个局部参数名。

    1、局部参数名

    局部参数名在函数的实现内部使用。

    func sample(number: Int) {
       println(number)
    }

    以上实例中 number 为局部参数名,只能在函数体内使用。

    func sample(number: Int) {
        print(number)
    }
    sample(number: 1)
    sample(number: 2)
    sample(number: 3)

    输出:

    1
    2
    3

    2、外部参数名

    你可以在局部参数名前指定外部参数名,中间以空格分隔,外部参数名用于在函数调用时传递给函数的参数。
    如下你可以定义以下两个函数参数名并调用它:

    func pow(firstArg a: Int, secondArg b: Int) -> Int {
       var res = a
       for _ in 1..<b {
          res = res * a
       }
       print(res)
       return res
    }
    pow(firstArg:5, secondArg:3)

    注意:
    如果你提供了外部参数名,那么函数在被调用时,必须使用外部参数名。

    八、可变参数

    可变参数可以接受零个或多个值。函数调用时,你可以用可变参数来指定函数参数,其数量是不确定的。
    可变参数通过在变量类型名后面加入(…)的方式来定义。

    func vari<N>(members: N...){
        for i in members {
            print(i)
        }
    }
    vari(members: 4,3,5)
    vari(members: 4.5, 3.1, 5.6)
    vari(members: "Google", "Baidu", "Runoob")

    以上程序执行输出结果为:

    4
    3
    5
    4.5
    3.1
    5.6
    Google
    Baidu
    Runoob

    九、常量、变量及 I/O 参数

    一般默认在函数中定义的参数都是常量参数,也就是这个参数你只可以查询使用,不能改变它的值。
    如果想要声明一个变量参数,可以在参数定义前加 inout 关键字,这样就可以改变这个参数的值了。

    func  getName(_ name: inout String).........

    此时这个 name 值可以在函数中改变。
    一般默认的参数传递都是传值调用的,而不是传引用。所以传入的参数在函数内改变,并不影响原来的那个参数。传入的只是这个参数的副本。
    当传入的参数作为输入输出参数时,需要在参数名前加 & 符,表示这个值可以被函数修改。

    1、实例

    func swapTwoInts(_ a: inout Int, _ b: inout Int) {
        let temporaryA = a
        a = b
        b = temporaryA
    }
    
    
    var x = 1
    var y = 5
    swapTwoInts(&x, &y)
    print("x 现在的值 \(x), y 现在的值 \(y)")

    以上程序执行输出结果为:

    x 现在的值 5, y 现在的值 1
    展开全文
  • iOS swift常用函数

    2018-02-25 15:39:32
    Swift包含了74个内置函数,但在 The Swift Programming Langage 一书中只介绍了其中的7个,其它的都没有在文档中体现。 这篇文章列举出了所有的Swift库函数。文中所谓的 内置函数 是指无需引入任何模块(比如说...
  • 直接贴代码了,可以支持多参数,在别人基础上进行修改 public func Fprint(_ items: Any..., separator: String = " ", terminator: String = "\n", _ file:String = #file, ...
  • swift大多数情况下我们直接用默认的print函数打印就可以了,不过有些情况可能要做写修改.比如我们想打印非换行信息怎么办?print默认会在每行输出后加一个换行符.注意Swiftprint函数是一个全局函数,她完整的函数签名...
  • Swift的高阶函数

    2019-08-08 08:40:28
    Swift的高阶函数swift常用高阶函数1. map2. flatMap3. filter4. reduce swift常用高阶函数 swift中比较常用的高阶函数有:map、flatMap、filter、reduce 1. map map可以对数组中的每一个元素做一次处理 // 计算...
  • print可以让我们打印一些信息进行调试查看 单个信息打印 print("hello")输出 hello 多个信息打印 print(1,2,3,4) 输出 1 2 3 4 自定义连接符打印 print(1,2,3,4, separator:"-") 输出 ...
  • swift 函数

    2018-12-18 10:26:04
    2.6、函数(Functions) 本页包含内容: 函数定义与调用 函数参数与返回值 函数参数标签和参数...Swift 统一的函数语法非常的灵活,可以用来表示任何函数,包括从最简单的没有参数名字的 C 风格函数,到复杂的...
  • 1、print函数 内置函数print默认格式为: print(value,value,…,sep=’ ‘,end=’\n’),可以通过命令help(print)查看print函数用法。 sep=‘分隔符’ 是自定义打印变量和常量之间的分隔符。 end 定义打印结尾添加...
  • Swift 变量名 Swift print的基本用法
  • swift函数

    2020-03-25 20:43:32
    swift函数 ** 函数定义 Swift 定义函数使用关键字 func。 定义函数的时候,可以指定一个或多个输入参数和一个返回值类型。 每个函数都有一个函数名来描述它的功能。通过函数名以及对应类型的参数值来调用这个函数。...
  • swift中的print

    2019-09-17 23:37:54
    一、自定义print 1.当前路径(String):let filePath = #file 2.当前函数(String):let funcName = #function 3.当前行号(Int):let lineNum = #line ...
  • Swift iOS 函数说明

    2018-03-07 08:06:06
    # 函数## 4.1 函数的定义与调用函数是一个组织在一起的程序代码集合,用来完成某个特定的功能。为了提高代码的复用性,通常对代码进行抽取,将能够完成同一个任务的代码放置在一起,可作为一个函数使用。给定函数一...
  • Swift中的幂运算函数

    2020-05-27 11:30:00
    Swift中想求幂运算、有系统函数pow(x,y),含义为:求x的y次幂 public func pow(_ x: Decimal, _ y: Int) -> Decimal Decimal根据系统文档表示为 表示以10为基数的数的结构体,就是十进制的表示方法,可以...
  • Swift函数

    2016-07-28 15:48:17
    Swift统一的函数语法足够灵活,可以用来表示任何函数,包括从最简单的没有参数名字的 C 风格函数,到复杂的带局部和外部参数名的Objective-C风格函数。参数可以提供默认值,以简化函数调用。参数也可以既当做传入...
1 2 3 4 5 ... 20
收藏数 10,376
精华内容 4,150