page contents
Nen
Nen - 程序员

性别: 天津 - 天津市 注册于 2021-06-23

向TA求助
2850金币数
43180 经验值
1个粉丝
主页被访问 6231 次

3096 个回答

0 赞同

Swift中mutating的作用?

   Swift中协议是可以被Struct和Enum实现的,mutating关键字是为了能在被修饰的函数中修改Struct或Enum的变量值,对Class完全透明。

回答于 2021-09-13 16:05

0 赞同

?,??的区别

?用来声明可选值,如果变量未初始化则自动初始化nil;在操作可选值时,如果可选值时nil则不响应后续的操作;使用as?进行向下转型操作; ?? 用来判断左侧可选值非空(not nil)时返回左侧值可选值,左侧可选值为空(nil)则返回右侧的值。

回答于 2021-09-13 16:05

0 赞同

Swift中的常量和Objective-C中的常量有啥区别?

 Objective-C中的常量(const)是编译期决定的,Swift中的常量(let)是运行时确定的

回答于 2021-09-13 16:05

0 赞同

Struct和Class的区别?

Struct不支持继承,Class支持继承 Struct是值类型,Class是引用类型 Struct使用let创建不可变,Class使用let创建可变 Struct无法修改自身属性值,函数需要添加mutating关键字 Struct不需要deinit方法,因为值类型不关系引用计数,Class需要deinit方法 Struct初始化方法是基于属性的

回答于 2021-09-13 16:05

0 赞同

Swift如何显示指定派发方式?

添加final关键字的函数使用直接派发 添加static关键字函数使用直接派发 添加dynamic关键字函数使用消息派发 添加@objc关键字的函数使用消息派发 添加@inline关键字的函数会告诉编译器可以使用直接派发

回答于 2021-09-13 16:04

0 赞同

讲讲Swift的派发机制?

函数的派发机制:静态派发(直接派发)、函数表派发、消息派发 Swift派发机制总结: Swift中所有ValueType(值类型:Struct、Enum)使用直接派发; Swift中协议的Extensions使用直接派发,初始声明函数使用函数表派发; Swift中Class中Extensions使用直接派发,初始声明函数使用函数表派发,dynamic修饰的函数使用消息...

回答于 2021-09-13 16:04

0 赞同

Swift和Objective-C有什么区别?

Swift是强类型(静态)语言,有类型推断,Objective-C弱类型(动态)语言 Swift面向协议编程,Objective-C面向对象编程 Swift注重值类型,Objective-C注重引用类型 Swift支持泛型,Objective-C只支持轻量泛型(给集合添加泛型) Swift支持静态派发(效率高)、动态派发(函数表派发、消息派发)方式,Objective-C支持动...

回答于 2021-09-13 16:03

0 赞同

空 struct{} 的用途?

使用空结构体 struct{} 可以节省内存,一般作为占位符使用,表明这里并不需要一个值。 fmt.Println(unsafe.Sizeof(struct{}{})) // 0 比如使用 map 表示集合时,只关注 key,value 可以使用 struct{} 作为占位符。如果使用其他类型作为占位符,例如 int,bool,不仅浪费了内存,而且容易引起歧义。 type Set map[string]...

回答于 2021-09-13 16:03

0 赞同

Go 语言中如何表示枚举值(enums)?

通常使用常量(const) 来表示枚举值。 type StuType int32 const ( Type1 StuType = iota Type2 Type3 Type4 ) func main() { fmt.Println(Type1, Type2, Type3, Type4) // 0, 1, 2, 3 } 参考 What is an idiomatic way of representing enums in Go? - StackOverflow

回答于 2021-09-13 16:02

0 赞同

字符串打印时,%v 和 %+v 的区别?

%v 和 %+v 都可以用来打印 struct 的值,区别在于 %v 仅打印各个字段的值,%+v 还会打印各个字段的名称。 type Stu struct { Name string}func main() { fmt.Printf("%v\n", Stu{"Tom"}) // {Tom} fmt.Printf("%+v\n", Stu{"Tom"}) // {Name:Tom}} 但如果结构体定义了 String() 方法,%v 和 %+v 都会调用 String() 覆盖默...

回答于 2021-09-13 16:02