代码之家  ›  专栏  ›  技术社区  ›  excitedmicrobe

缺少带有默认参数的声明

  •  1
  • excitedmicrobe  · 技术社区  · 8 年前

    这个代码是错误的,还是已知的问题?

    final class Foo {
        //@inlinable @inline(_always)
        static func bar(_ first: String = "default", _ second: Int) {
            print(first,second)
        }
    }
    
    Foo.bar(2)
    

    将导致: Screenshot

    2 回复  |  直到 8 年前
        1
  •  1
  •   Dominik Bucher    8 年前

    • Int 到 String ... 我不会感到惊讶的

    现在我不想“教育”你如何编写好的代码,但你上面的例子真的不是。只是没有标签写函数不是很直观,这是一个完美的例子,为什么我们应该使用标签。。。斯威夫特社区建议的写作功能非常棒。。。

        final class Foo {
        //@inlinable @inline(_always)
        static func bar(first: String = "default", second: Int) {
            print(first,second)
        }
    }
    
    Foo.bar(second: 2)
    

    为什么不省略下划线呢?:)

        2
  •  4
  •   matt    8 年前

    错误消息和往常一样没有帮助,其他语言的行为可能不同,但这并不构成bug。如果有什么可抱怨的,那就是编译器应该警告不要使用原始方法声明,因为第一个参数的默认值是otiose。

    推荐文章