Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift方法中的第一个参数标签_Swift_Signature_Method Signature - Fatal编程技术网

Swift方法中的第一个参数标签

Swift方法中的第一个参数标签,swift,signature,method-signature,Swift,Signature,Method Signature,以下哪一种方法遵循Swift思想 func addChapter(uu chapter:chapter) func添加(章节:章节) func添加(uu章:章) 我认为这取决于具体情况 例如,您有用户结构 struct User { static func add(with userId: String) { // ... } static func addFollower(for userId: String, _ followerId: Strin

以下哪一种方法遵循Swift思想

  • func addChapter(uu chapter:chapter)
  • func添加(章节:章节)
  • func添加(uu章:章)

    • 我认为这取决于具体情况

      例如,您有用户结构

      struct User {
          static func add(with userId: String) {
              // ...
          }
      
          static func addFollower(for userId: String, _ followerId: String) {
              // ...
          }
      }
      
      您将在何时使用它:

      User.add(with: newUserId) // Like sentense: User add with new user Id
      

      希望对您有所帮助

      第一条似乎是正确的:

      // Clear
      func addChapter(_ chapter: Chapter)
      variable.addChapter(x)
      
      // Not clear
      func add(chapter chapter: Chapter)
      variable.add(chapter: x)
      
      // Not clear
      func add(_ chapter: Chapter)
      variable.add(x)
      
      注意:在Sulthan的评论后更改了答案,请参考他的答案。

      TLDR:

      根据
      章节
      信息与其他方法/含义的区别是否重要,您应该使用第一个或第三个选项。不是第二种选择

      包括所有必要的单词,以避免阅读代码时出现歧义

      …,如果第一个参数构成语法短语的一部分,则省略其标签,在基本名称后面附加任何前面的单词,例如
      x.addSubview(y)

      (来自)


      在不了解班级的情况下,这是很难决定的

      我们认为这是一个类:

      class Book {
          var chapters: [Chapter]
          var pages: [Page]
          var metadata: [MetaData]
      }
      
      如果您了解Obj-C方法的导入方式,您可以了解到导入方法的首选方式
      [UIView AddgestureRecognitizer::
      AddgestureRecognitizer(uU2;:UIgestureRecognitizer)

      请注意理由:

      如果我们要删除GestureRecognizer,只留下add,那么我们最终会得到一个方法,该方法在概念上修改gestureRecognizers属性,但使用了一个过于通用的名称

      这就是为什么有一条规则

      切勿从与封闭类的属性匹配的方法的基名称中删除后缀:

      您的第一个选择就是正确的解决方案

      另一方面,如果您的类具有以下形式:

      class Chapters {
         private var chapters: [Chapter]
      }
      
      (例如,阵列状容器)

      那么
      add(:)
      就是正确的解决方案


      第二个选项
      add(chapter:)
      永远不应该使用。

      我个人同意

      func add(chapter: Chapter)
      

      这个解决方案对我来说似乎是最清晰的。

      我认为最后一个方案遵循Swift 3 API设计指南。第二个方案与您引用的API设计指南不符。我认为您指的是“省略不必要的词”,但它取决于变量类型本身:示例中的“元素”是一个非常通用的东西,因此,类型是在变量名本身中指定的-示例提供了“cancelButton”;在回答的情况下,这一章不是泛型的,因此变量名将不是特定的,比如“first”、“second”等等:在这种情况下,我更喜欢在方法定义中提供上下文否则,如果第一个参数构成语法短语的一部分,请省略其标签,在基本名称后面附加任何前面的单词“哦,太好了!我看了命名约定,而不是参数标签。谢谢!
      func add(chapter: Chapter)