我可以在Swift库中看到这些定义:
extension Bool : BooleanLiteralConvertible {
static func convertFromBooleanLiteral(value: Bool) -> Bool
}
protocol BooleanLiteralConvertible {
typealias BooleanLiteralType
class func convertFromBooleanLiteral(value: BooleanLiteralType) -> Self
}
Run Code Online (Sandbox Code Playgroud)
定义为的成员函数与定义为的static func另一个成员函数之间有什么区别class func?它只是static用于结构和枚举的静态函数,以及class类和协议吗?还有其他人应该知道的差异吗?在语法本身中有这种区别的理由是什么?
来自Apple的书"结构和类之间最重要的区别之一是结构在代码中传递时总是被复制,但类是通过引用传递的."
任何人都可以让我理解这意味着什么,对我来说,类和结构似乎是一样的.
我对在swift中使用static关键字感到有些困惑.正如我们所知,swift引入了let关键字来声明不可变对象.就像声明一个表视图单元的id一样,它最有可能在其生命周期内不会改变.现在什么是在一些struct的声明中使用static关键字:
struct classConstants
{
static let test = "test"
static var totalCount = 0
}
Run Code Online (Sandbox Code Playgroud)
而let关键字也是这样.在Objective C中,我们使用static来声明一些常量
static NSString *cellIdentifier=@"cellId";
Run Code Online (Sandbox Code Playgroud)
除此之外让我更好奇的是使用static关键字以及let和var关键字.谁能解释一下我在哪里使用这个静态关键字?更重要的是我们真的需要swift的静态吗?
metatype .Type和.selfSwift有什么区别?
做.self并.Type返回struct?
我明白.self可以用来检查dynamicType.你怎么用的.Type?
我一直认为函数和方法是一样的,直到我通过"Swift编程语言"电子书学习Swift.我发现我不能greet("John", "Tuesday")用来调用我在类中声明的函数,如下面屏幕截图中的电子书所示:

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

这是代码: -
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编程时从未意识到这种差异.
Swift中的函数和方法有什么区别?
我们何时使用函数?何时使用Swift中的方法?
有没有办法在swift中的类级别或结构级别添加方法?
struct Card {
var rank: Rank
var suit: Suit
func simpleDescription() -> String {
return "The \(rank.simpleDescription()) of \(suit.simpleDescription())"
}
}
Run Code Online (Sandbox Code Playgroud)
摘录自:Apple Inc."The Swift Programming Language."iBooks.https://itun.es/us/jEUH0.l
现在,如果你想添加一个创建完整卡片组的方法,那么最好的方法是什么呢?
我正在尝试为单例创建一个访问方法.我收到此错误(请参阅下面的代码).我不明白为什么我会收到此错误以及此错误的含义.谁能解释一下?
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
static private var thedelegate: AppDelegate?
class var delegate : AppDelegate {
return thedelegate!
}
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
thedelegate = self // syntax error: Static member 'thedelegate' cannot be used on instance of type 'AppDelegate'
Run Code Online (Sandbox Code Playgroud) 我知道static关键字用于声明类型变量/在方法struct,enum等等.
但今天我发现它也可以在class实体中使用.
class foo {
static func hi() {
println("hi")
}
class func hello() {
println("hello")
}
}
Run Code Online (Sandbox Code Playgroud)
什么是static关键字的使用class实体?
谢谢!
编辑:我指的是Swift 1.2,如果这有任何区别的话
如何存储Swift中的静态变量?
如果我从不调用func useStaticVar()会发生什么?这些变量是否已初始化?
如果我调用useStaticVar()然后再也不访问它们会发生什么?氩
struct Something {
static var myVariable = 0
static let myConstant = 3
static var myString: String?
static func useStaticVar() {
myVariable = myConstant
myString = String(myVariable)
}
}
Run Code Online (Sandbox Code Playgroud)我无法找到任何区别class static function来struct static function。据我所知,类静态函数不能被继承,而struct没有继承选项。
请不要在课堂上被static func和class func弄糊涂。
class a {
static func myMethod1() {
}
}
Run Code Online (Sandbox Code Playgroud)
与
struct a {
static func myMethod1() {
}
}
Run Code Online (Sandbox Code Playgroud)