当前位置: 首页 > 面试题库 >

Swift使方法参数可变吗?

史昀
2023-03-14
问题内容

如何在不创建其他变量的情况下处理此错误?

func reduceToZero(x:Int) -> Int {
    while (x != 0) {
        x = x-1            // ERROR: cannot assign to 'let' value 'x'
    }
    return x
}

我不想创建其他变量只是为了存储x的值。有可能做我想做的事吗?


问题答案:

如其他答案所述,从Swift 3开始,将var放在不推荐使用的变量之前。尽管没有在其他答案中说明,但是可以声明inout参数。思考:传递一个指针。

func reduceToZero(_ x: inout Int) {
    while (x != 0) {
        x = x-1     
    }
}

var a = 3
reduceToZero(&a)
print(a) // will print '0'

这在递归中特别有用。

苹果的inout声明指南可以在这里找到。



 类似资料:
  • 在具体实际开发过程中,有时方法中参数的个数是不确定的。为了解决这个问题,在 J2SE 5.0 版本中引入了可变参数的概念。 声明可变参数的语法格式如下: 其中,methodName 表示方法名称;paramList 表示方法的固定参数列表;paramType 表示可变参数的类型;… 是声明可变参数的标识;paramName 表示可变参数名称。 注意:可变参数必须定义在参数列表的最后。 例 1 每次

  • 本文向大家介绍java中的可变参数使用方法,包括了java中的可变参数使用方法的使用技巧和注意事项,需要的朋友参考一下 java中的可变参数使用方法 可变参数时Java 1.5新增的方法,可变参数方法接收0个或者多个指定类型的参数,可变参数机制通过先创建一个数组,数组的大小为在调用位置所传递的参数数量,然后将参数值传到数组中,最后将数组传递给方法。如:  可变参数提供了方便,但是使用可变参数时需要

  • 问题内容: 我正在尝试创建一个字符串扩展来做类似的事情 看起来像这样 它给我以下编译错误 类型CVaListPointer不符合协议CVargType 有人知道如何解决此编译错误吗? 问题答案: 这应该非常简单,只需更改您的参数,如下所示: 初始化(格式:语言环境:参数:)

  • 本文向大家介绍Swift中的可变参数函数介绍,包括了Swift中的可变参数函数介绍的使用技巧和注意事项,需要的朋友参考一下 可变参数函数指的是可以接受任意多个参数的函数,我们最熟悉的可能就是 NSString 的 -stringWithFormat:方法了。在 Objective-C 中,我们使用这个方法生成字符串的写法是这样的: 这个方法中的参数是可以任意变化的,参数的第一项是需要格式化的字符串

  • 5.7. 可变参数 参数数量可变的函数称为为可变参数函数。典型的例子就是fmt.Printf和类似函数。Printf首先接收一个的必备参数,之后接收任意个数的后续参数。 在声明可变参数函数时,需要在参数列表的最后一个参数类型之前加上省略符号“...”,这表示该函数会接收任意数量的该类型参数。 gopl.io/ch5/sum func sum(vals...int) int { total

  • 问题内容: 该代码无法编译,编译器说f含糊。但是我认为第二种方法可以解决什么问题? 问题答案: 这是因为无法确定该方法调用是应调用变量args还是应调用float和变量args。 Java决定以这种方式来调用拓宽>装箱>变量args的方法,但是在这种情况下,两者都具有变量args。 在这种情况下,基本上将char扩展为浮动。 Java基元的扩展顺序为: