两者都能实现功能,之所以分开写,是希望把处理代码和显示代码分开,那个函数就负责,你输入一个数字,我返回给你一个状态,这个状态里包含了所有信息,后面那个switch,只不过是帮忙把这个状态信息表现了出来(通过终端打印的方式)
这样做的好处是,可能在别的场景中,比如说我写了一个图形界面,这时候我要表现这个信息,可能就是更新界面了,这个时候,我原先函数是不需要变的,变得只是负责显示部分的代码。
至于什么时候用枚举,我觉得不用刻意强求,知道有这么一个东西,实战中慢慢的就会知道什么时候用这个了
在看后面的视频中我逐渐明白了如何回答自己这个问题:
借用刘老师视频中的话:“方便的构造函数认为当自己在最终调用指定的构造函数时(必须的),self 才被构造出来。”那么只需要在当前的方便的构造函数中传入那个在最终调用指定的构造函数时所传入的值,就可以了。回归到本例中,就是“在当前的方便的构造函数中传入group : "" 就可以了”
这个是作用域的关系区别的原因吧
解决了 我是把可选型的var 写成let了 既然是let 但是你又不在构造函中给他赋值 ,那么这个let在那个构造函数中就变得没有用处 当用户调用这个let的时候就会出现问题了!
先上代码:
var name = Optional.some("daniel")
name = Optional.none
首先:对题主提问中对表表述做一点点更正。也许更正了这个也就同时解决了题主对提问
“就是说这个值是属于Optional里面的‘.none类型 ’而他不是属于Optional里面的‘.some类型 ’?”
其中.‘.none类型 ’不应该称之为一种“类型”,‘.some类型 ’也不应该称之为一种“类型”。它们两个都是“Optional类型”这种类型的一个枚举值。顺便说一下,至于“Optional类型”从源码看(
public enum Optional<Wrapped> : ExpressibleByNilLiteral
),它是一个枚举类型。
另外:
如果一解包个String?的值 ,得到的结果是String类型。对nil 进行解包,是不会得到nil的。代码如下。题主可以借助 Xcode 自行看一下相应对变量类型
var str : String? = nil // 等价于 var str2 : String? = Optional.none
if let newStr = str {
print(newStr)
} else{
// print(newStr) //编译出错
print("解包失败")
}
这个 同理 c oc语言一样。setter和getter方法
你这个错误是
你强行解包了 在这个函数中 你自己检查一下
#include <stdio.h> int main() { printf("hehe\n"); return 0; }
快来围观这个课程的官方代码仓,更有高中小牛将这个课程的代码全部修改支持Swift4了哦:)
看右边的课程也是可以的,
老师,有swift语言蓝牙对战版本的吗
因为defaultGameManager是静态变量,它是属于整个类的,故不能被一个对象访问
........ 你要看 manager里面的这段代码
public static let defaultManager = GameManager()
private init(){
}
defaultmanager 是一个属性 但是 = 后面是当前类的实例 并且使用了static let进行限制 所以拿到的是一份单利类 和oc中单利原理一致
现在即使在结构体中是String? 你也要给他赋值 不然会报错
centerY = origin.y + size.height/2 才是正确的。origin.y是一个控件的初始y坐标加上控价高的一半才是控件的中心y点。
didSet里面赋值fontColor的changeMode是为了检测themeMode改变时的处理代码,当themeMode第二次被赋值,didSet里的代码就会被执行
str.range(of: ",")
苹果根据新的规范,换了很多函数的名称
另外:像这种问题你可以试着打一些2.1里函数的关键词,比如说.range,大部分情况下就会出来新的函数名称
enum Month: String{ case Jan = "1" case Feb = "2" case Mar = "3" case Apr = "4" } Month.Apr.rawValue "4"
可以啊
public 的changescore()该有多危险。。。。
构造函数的关键字。必须有讲过!
试图重现你的问题,未成功....
可以使用的,课程中也有讲到区别:
结构体构造的数据模型是值类型,存取在栈中效率更高,可以产生很多不同的副本;
类构造的是引用类型,存在堆中。
如果我猜的不错的话,应该是复制粘贴的
代码应该没问题,应该是你的其它代码出问题了
没有什么好处
看样子是重写,是不是写错了?