【问题标题】:Is this a method or a function?这是一个方法还是一个函数?
【发布时间】:2017-03-30 18:20:12
【问题描述】:

在这种情况下使用 getDataPoint() 是一种方法而不是函数,我是否正确?

class Globals: NSObject{
   static let sharedInstance = Globals()

   func getDataPoint() -> Int {
      var theValue: Int
      //Some JSON code here
      return theValue
   }
}

class GameScene: SKScene{
   override func didMove(to: view: SKView){
      let globals = Globals.sharedInstance()

      var x = globals.getDataPoint() //Is a method?
   }
}

但如果我在 Globals 类中使用,我会称它为函数。

 class Globals: NSObject{
   static let sharedInstance = Globals()

   func foo() {
      print(\(getDataPoint())) //Is a function?
   }

   func getDataPoint() -> Int {
      var theValue: Int
      //Some JSON code here
      return theValue
   }
}

【问题讨论】:

  • 它附属于一个类型——因此它是一个方法。但方法仍然是函数。
  • @Hamish 这正是我的想法,但请参阅我的编辑。然后呢?
  • @Sulthan 你是什么意思一切都返回一个值? foo() 在我的示例中返回什么?
  • 方法只是在类内部定义的简单函数。在类定义中,它们看起来像一个常规函数。要在课堂外使用它们,您需要使用点符号Globals.foo()。 (至少对于普通的课程 - 我不知道 Swift)
  • 关于函数返回值和方法的已删除评论不是一个粗略的启发式方法,似乎有点过时了。我知道的语言(Python 和 R)肯定不是这种情况

标签: swift function methods


【解决方案1】:

方法不是“与函数相对”,所以这个问题毫无意义。方法一个函数——在类型声明的顶层声明的函数。

func function() {}
class Class {
    func method() {}
    func anotherMethod() {
        func function() { }
    }
}

【讨论】:

    【解决方案2】:

    这是一种方法。这只是 Swift 用于在没有 self. 限定符的情况下引用方法和属性的简写。

    func foo() {
       print(\(getDataPoint()))
    }
    

    和写完全一样

    func foo() {
       print(\(self.getDataPoint()))
    }
    

    【讨论】:

    • 什么使它成为一个函数?
    • @TheValyreanGroup 方法函数。我假设您的问题和评论中的意思是免费功能;这些是您在类型范围之外定义的函数。
    猜你喜欢
    • 2015-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-24
    • 2023-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多