当前位置: 首页 > 知识库问答 >
问题:

Swift和params方法默认值

嵇昱
2023-03-14
class A {
    func c(d: String = "abc") {
        // (1)
    }
}
class B {
   func z() {
      let aaa = A()
      aaa.c()
   }
}

extension A {
    func c(d: String = "abc", e: String = "123") {
        // (2)
    }
}

共有1个答案

华凡
2023-03-14

您的类A有两个函数,C(d:)C(d:E:)。在Swift中,两个函数可以共享相同的“名字”,但通过它们的参数来区分。因此,函数的“全名”由其名称和所有参数标签组成。

替换行

aaa.c()

aaa.c(d:e:)()
 类似资料:
  • Swift func/闭包签名能否指定提供默认参数值? 我尝试做的一个高度简化的版本是这样的: 我在“账单”调用中得到的错误是:中缺少参数#2的参数 我尝试将typealias行改为:

  • 主要内容:1 Java8 默认方法的介绍,2 Java8 默认方法的案例1 Java8 默认方法的介绍 Java提供了一种在接口内部创建默认方法的功能。在接口内部定义并带有默认标记的方法称为默认方法。这些方法是非抽象方法。 2 Java8 默认方法的案例 在下面的示例中,Sayable是一个功能接口,其中包含默认值和抽象方法。默认方法的概念用于定义具有默认实现的方法。您还可以覆盖默认方法,以为该方法提供更具体的实现。 输出结果为:  

  • 问题内容: 我习惯于Python的defaultdict的一种模式是字典,如果未显式设置给定键的值,则该字典将返回默认值。尝试在Swift中做到这一点有点冗长。 我意识到我可以创建一个做到这一点的类,但是随后必须通过属性访问实际的Dictionary才能使用其他任何普通的Dictionary方法 有更好的模式吗? 问题答案: 使用Swift 2,您可以实现类似于python版本的扩展名: 后面的闭

  • Java 8在接口中引入了默认方法实现的新概念。 添加此功能是为了向后兼容,以便可以使用旧接口来利用Java 8的lambda表达式功能。 例如,“List”或“Collection”接口没有“forEach”方法声明。 因此,添加此类方法将简单地破坏集合框架实现。 Java 8引入了默认方法,因此List/Collection接口可以具有forEach方法的默认实现,而实现这些接口的类不需要实现

  • 问题内容: 拥有具有默认方法的接口的动态代理,如何调用默认方法?通过使用类似的方法,您可以得到名为的代理调用处理程序(这在某种程度上是正确的,因为您没有为此接口实现的类)。 我有一个使用ASM来创建实现接口的类并将此类调用委派给此类实例的解决方法。但这不是一个好的解决方案,特别是如果默认方法调用其他接口方法(您将获得委托人乒乓球)。JLS对此问题出人意料地保持沉默… 这里是一个小代码示例: 问题答

  • JUnit Jupiter允许在接口default方法中声明@Test,@RepeatedTest,@ParameterizedTest,@ TestFactory,@TestTemplate,@BeforeEach和@AfterEach。如果测试接口或测试类用@TestInstance(Lifecycle.PER_CLASS)注解(请参阅测试实例生命周期),则可以在测试接口中的static方法或