相关疑难解决方法(0)

什么是Swift References的_下划线代表?

在Apple的文档的参考部分中有很多这种事情的实例:

func runAction(_action: SKAction!)

Objective-C'等效'是:

- (void)runAction:(SKAction *)action

让我感到非常重要的是(在Swift参考中)下划线后面有一个空格,而"动作"用斜体字写成.

但我无法弄清楚这是想传达什么.所以也许问题是......参考文献中使用的约定是否有参考?

- 这是我参考下划线使用的参考页面:https: //developer.apple.com/documentation/spritekit/sknode#//apple_ref/occ/instm/SKNode/runAction

更新

Swift 3对如何使用和命名函数/方法参数名称和参数标签进行了一些更改.这会对这个问题及其答案产生影响.@Rickster做了一个很棒的工作,回答了关于_underscores的一个不同的问题,在这些函数中清除了大部分内容,这里:为什么我需要在swift中使用下划线?

declaration function objective-c swift

138
推荐指数
6
解决办法
4万
查看次数

Swift中何时需要参数标签?

在回答这个问题时,我们发现了一个调用标签是必需的init.这在Swift中是正常的.

class Foo {
    init(one: Int, two: String) { }
}

let foo = Foo(42, "Hello world") // Missing argument labels 'one:two:' in call
Run Code Online (Sandbox Code Playgroud)

然而,陌生人的力量在起作用:

extension Foo {
    func run(one: String, two: [Int]) { }
}

foo.run(one: "Goodbye", two: []) // Extraneous argument label 'one:' in call
Run Code Online (Sandbox Code Playgroud)

要在此处使用参数标签,必须明确声明.

我没有在文档中看到非常详尽的解释所有这些内容.哪些类/实例/全局函数是必需的参数标签?是否始终使用参数标签导出和导入Obj-C方法?

syntax swift

63
推荐指数
5
解决办法
3万
查看次数

Swift中的函数和方法有什么区别?

我一直认为函数和方法是一样的,直到我通过"Swift编程语言"电子书学习Swift.我发现我不能greet("John", "Tuesday")用来调用我在类中声明的函数,如下面屏幕截图中的电子书所示:

swift中的函数声明

我收到一条错误,说"根据此屏幕截图,错过了参数标签'日:'正在通话中 ":

swift中的错误消息

这是代码: -

import Foundation
import UIKit

class ViewController2: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()

        //var dailyStatement = greet("John", "Tuesday")
        var dailyStatement = greet("John", day: "Tuesday")
        println(dailyStatement)
    }

    func greet(name: String, day: String) -> String {
        return "Hello \(name), today is \(day)."
    }
}
Run Code Online (Sandbox Code Playgroud)

经过一些研究,我发现了这篇文章:方法和函数之间的区别,在我看来,我在类中声明的函数实际上被称为方法.因此,与用于调用函数的语法相比,我用于调用方法的语法是不同的.

我在Objective-C编程时从未意识到这种差异.

  1. Swift中的函数和方法有什么区别?

  2. 我们何时使用函数?何时使用Swift中的方法?

methods function swift

46
推荐指数
4
解决办法
2万
查看次数

Swift错误:在调用中缺少参数标签'name:'

我正在学习默认参数,并且搁浅了一些奇怪的东西:

import UIKit

func greet(name: String = "world") {
    println("hello \(name)")
}

greet("jiaaro")
Run Code Online (Sandbox Code Playgroud)

这会抛出一个错误:

Playground execution failed: error: <REPL>:9:7: error: missing argument label 'name:' in call
greet("jiaaro")
      ^
      name:
Run Code Online (Sandbox Code Playgroud)

我明白它想要,greet(name: "jiaaro")但我明白为什么这是必要的.

swift

12
推荐指数
1
解决办法
9663
查看次数

标签 统计

swift ×4

function ×2

declaration ×1

methods ×1

objective-c ×1

syntax ×1