当前位置: 首页 > news >正文

微信浏览为网站的缓存怎么清理搜索引擎关键词优化技巧

微信浏览为网站的缓存怎么清理,搜索引擎关键词优化技巧,北京做网站软件,北京最新楼盘广告本页包含内容#xff1a; 元组可选nilif 语句以及强制解析可选绑定隐式解析可选类型错误处理断言 元组 元组#xff08;tuples#xff09;把多个值组合成一个复合值。元组内的值可以是任意类型#xff0c;并不要求是相同类型。 下面这个例子中#xff0c;(404, Not… 本页包含内容 元组可选nilif 语句以及强制解析可选绑定隐式解析可选类型错误处理断言 元组 元组tuples把多个值组合成一个复合值。元组内的值可以是任意类型并不要求是相同类型。 下面这个例子中(404, Not Found)是一个描述 HTTP 状态码HTTP status code的元组。HTTP 状态码是当你请求网页的时候 web 服务器返回的一个特殊值。如果你请求的网页不存在就会返回一个404 Not Found状态码。 let http404Error (404, Not Found) // http404Error 的类型是 (Int, String)值是 (404, Not Found) (404, Not Found)元组把一个Int值和一个String值组合起来表示 HTTP 状态码的两个部分一个数字和一个人类可读的描述。这个元组可以被描述为“一个类型为(Int, String)的元组”。 你可以把任意顺序的类型组合成一个元组这个元组可以包含所有类型。只要你想你可以创建一个类型为(Int, Int, Int)或者(String, Bool)或者其他任何你想要的组合的元组。 你可以将一个元组的内容分解decompose成单独的常量和变量然后你就可以正常使用它们了 let (statusCode, statusMessage) http404Error print(The status code is \(statusCode)) // 输出 The status code is 404 print(The status message is \(statusMessage)) // 输出 The status message is Not Found 如果你只需要一部分元组值分解的时候可以把要忽略的部分用下划线_标记 let (justTheStatusCode, _) http404Error print(The status code is \(justTheStatusCode)) // 输出 The status code is 404 此外你还可以通过下标来访问元组中的单个元素下标从零开始 print(The status code is \(http404Error.0)) // 输出 The status code is 404 print(The status message is \(http404Error.1)) // 输出 The status message is Not Found 你可以在定义元组的时候给单个元素命名 let http200Status (statusCode: 200, description: OK) 给元组中的元素命名后你可以通过名字来获取这些元素的值 print(The status code is \(http200Status.statusCode)) // 输出 The status code is 200 print(The status message is \(http200Status.description)) // 输出 The status message is OK 作为函数返回值时元组非常有用。一个用来获取网页的函数可能会返回一个(Int, String)元组来描述是否获取成功。和只能返回一个类型的值比较起来一个包含两个不同类型值的元组可以让函数的返回信息更有用。 注意 元组在临时组织值的时候很有用但是并不适合创建复杂的数据结构。如果你的数据结构并不是临时使用请使用类或者结构体而不是元组。 可选类型 使用可选类型optionals来处理值可能缺失的情况。可选类型表示 有值等于 x 或者 没有值 注意 C 和 Objective-C 中并没有可选类型这个概念。最接近的是 Objective-C 中的一个特性一个方法要不返回一个对象要不返回nilnil表示“缺少一个合法的对象”。然而这只对对象起作用——对于结构体基本的 C 类型或者枚举类型不起作用。对于这些类型Objective-C 方法一般会返回一个特殊值比如NSNotFound来暗示值缺失。这种方法假设方法的调用者知道并记得对特殊值进行判断。然而Swift 的可选类型可以让你暗示_任意类型_的值缺失并不需要一个特殊值。 来看一个例子。Swift 的Int类型有一种构造器作用是将一个String值转换成一个Int值。然而并不是所有的字符串都可以转换成一个整数。字符串123可以被转换成数字123但是字符串hello, world不行。 下面的例子使用这种构造器来尝试将一个String转换成Int let possibleNumber 123 let convertedNumber Int(possibleNumber) // convertedNumber 被推测为类型 Int? 或者类型 optional Int 因为该构造器可能会失败所以它返回一个可选类型optionalInt而不是一个Int。一个可选的Int被写作Int?而不是Int。问号暗示包含的值是可选类型也就是说可能包含Int值也可能不包含值。不能包含其他任何值比如Bool值或者String值。只能是Int或者什么都没有。 nil 你可以给可选变量赋值为nil来表示它没有值 var serverResponseCode: Int? 404 // serverResponseCode 包含一个可选的 Int 值 404 serverResponseCode nil // serverResponseCode 现在不包含值 注意 nil不能用于非可选的常量和变量。如果你的代码中有常量或者变量需要处理值缺失的情况请把它们声明成对应的可选类型。 如果你声明一个可选常量或者变量但是没有赋值它们会自动被设置为nil var surveyAnswer: String? // surveyAnswer 被自动设置为 nil 注意 Swift 的nil和 Objective-C 中的nil并不一样。在 Objective-C 中nil是一个指向不存在对象的指针。在 Swift 中nil不是指针——它是一个确定的值用来表示值缺失。任何类型的可选状态都可以被设置为nil不只是对象类型。 if 语句以及强制解析 你可以使用if语句和nil比较来判断一个可选值是否包含值。你可以使用“相等”()或“不等”(!)来执行比较。 如果可选类型有值它将不等于nil: if convertedNumber ! nil {print(convertedNumber contains some integer value.) } // 输出 convertedNumber contains some integer value. 当你确定可选类型确实包含值之后你可以在可选的名字后面加一个感叹号!来获取值。这个惊叹号表示“我知道这个可选有值请使用它。”这被称为可选值的强制解析forced unwrapping if convertedNumber ! nil {print(convertedNumber has an integer value of \(convertedNumber!).) } // 输出 convertedNumber has an integer value of 123. 注意 使用!来获取一个不存在的可选值会导致运行时错误。使用!来强制解析值之前一定要确定可选包含一个非nil的值。 可选绑定 使用可选绑定optional binding来判断可选类型是否包含值如果包含就把值赋给一个临时常量或者变量。可选绑定可以用在if和while语句中这条语句不仅可以用来判断可选类型中是否有值同时可以将可选类型中的值赋给一个常量或者变量。 像下面这样在if语句中写一个可选绑定 if let constantName someOptional {statements } 你可以像上面这样使用可选绑定来重写possibleNumber这个例子 if let actualNumber Int(possibleNumber) {print(\\(possibleNumber)\ has an integer value of \(actualNumber)) } else {print(\\(possibleNumber)\ could not be converted to an integer) } // 输出 123 has an integer value of 123 这段代码可以被理解为 “如果Int(possibleNumber)返回的可选Int包含一个值创建一个叫做actualNumber的新常量并将可选包含的值赋给它。” 如果转换成功actualNumber常量可以在if语句的第一个分支中使用。它已经被可选类型 包含的 值初始化过所以不需要再使用!后缀来获取它的值。在这个例子中actualNumber只被用来输出转换结果。 你可以在可选绑定中使用常量和变量。如果你想在if语句的第一个分支中操作actualNumber的值你可以改成if var actualNumber这样可选类型包含的值就会被赋给一个变量而非常量。 你可以包含多个可选绑定在if语句中并使用where子句做布尔值判断。 if let firstNumber Int(4), secondNumber Int(42) where firstNumber secondNumber {print(\(firstNumber) \(secondNumber)) } // prints 4 42 隐式解析可选类型 如上所述可选类型暗示了常量或者变量可以“没有值”。可选可以通过if语句来判断是否有值如果有值的话可以通过可选绑定来解析值。 有时候在程序架构中第一次被赋值之后可以确定一个可选类型_总会_有值。在这种情况下每次都要判断和解析可选值是非常低效的因为可以确定它总会有值。 这种类型的可选状态被定义为隐式解析可选类型implicitly unwrapped optionals。把想要用作可选的类型的后面的问号String?改成感叹号String!来声明一个隐式解析可选类型。 当可选类型被第一次赋值之后就可以确定之后一直有值的时候隐式解析可选类型非常有用。隐式解析可选类型主要被用在 Swift 中类的构造过程中请参考无主引用以及隐式解析可选属性。 一个隐式解析可选类型其实就是一个普通的可选类型但是可以被当做非可选类型来使用并不需要每次都使用解析来获取可选值。下面的例子展示了可选类型String和隐式解析可选类型String之间的区别 let possibleString: String? An optional string. let forcedString: String possibleString! // 需要惊叹号来获取值let assumedString: String! An implicitly unwrapped optional string. let implicitString: String assumedString // 不需要感叹号 你可以把隐式解析可选类型当做一个可以自动解析的可选类型。你要做的只是声明的时候把感叹号放到类型的结尾而不是每次取值的可选名字的结尾。 注意 如果你在隐式解析可选类型没有值的时候尝试取值会触发运行时错误。和你在没有值的普通可选类型后面加一个惊叹号一样。 你仍然可以把隐式解析可选类型当做普通可选类型来判断它是否包含值 if assumedString ! nil {print(assumedString) } // 输出 An implicitly unwrapped optional string. 你也可以在可选绑定中使用隐式解析可选类型来检查并解析它的值 if let definiteString assumedString {print(definiteString) } // 输出 An implicitly unwrapped optional string. 注意 如果一个变量之后可能变成nil的话请不要使用隐式解析可选类型。如果你需要在变量的生命周期中判断是否是nil的话请使用普通可选类型。 错误处理 你可以使用错误处理error handling来应对程序执行中可能会遇到的错误条件。 相对于可选中运用值的存在与缺失来表达函数的成功与失败错误处理可以推断失败的原因并传播至程序的其他部分。 当一个函数遇到错误条件它能报错。调用函数的地方能抛出错误消息并合理处理。 func canThrowAnError() throws {// 这个函数有可能抛出错误 } 一个函数可以通过在声明中添加throws关键词来抛出错误消息。当你的函数能抛出错误消息时, 你应该在表达式中前置try关键词。 do {try canThrowAnError()// 没有错误消息抛出 } catch {// 有一个错误消息抛出 } 一个do语句创建了一个新的包含作用域,使得错误能被传播到一个或多个catch从句。 这里有一个错误处理如何用来应对不同错误条件的例子。 func makeASandwich() throws {// ... }do {try makeASandwich()eatASandwich() } catch Error.OutOfCleanDishes {washDishes() } catch Error.MissingIngredients(let ingredients) {buyGroceries(ingredients) } 在此例中makeASandwich()做一个三明治函数会抛出一个错误消息如果没有干净的盘子或者某个原料缺失。因为makeASandwich()抛出错误函数调用被包裹在try表达式中。将函数包裹在一个do语句中,任何被抛出的错误会被传播到提供的catch从句中。 如果没有错误被抛出, eatASandwich()函数会被调用。如果一个匹配Error.OutOfCleanDishes的错误被抛出,washDishes函数会被调用。如果一个匹配Error.MissingIngredients的错误被抛出buyGroceries(_:)函数会被调用并且使用catch所捕捉到的关联值[String]作为参数。 断言 可选类型可以让你判断值是否存在你可以在代码中优雅地处理值缺失的情况。然而在某些情况下如果值缺失或者值并不满足特定的条件你的代码可能没办法继续执行。这时你可以在你的代码中触发一个断言assertion来结束代码运行并通过调试来找到值缺失的原因。 使用断言进行调试 断言会在运行时判断一个逻辑条件是否为true。从字面意思来说断言“断言”一个条件是否为真。你可以使用断言来保证在运行其他代码之前某些重要的条件已经被满足。如果条件判断为true代码运行会继续进行如果条件判断为false代码执行结束你的应用被终止。 如果你的代码在调试环境下触发了一个断言比如你在 Xcode 中构建并运行一个应用你可以清楚地看到不合法的状态发生在哪里并检查断言被触发时你的应用的状态。此外断言允许你附加一条调试信息。 你可以使用全局assert(_:_:file:line:)函数来写一个断言。向这个函数传入一个结果为true或者false的表达式以及一条信息当表达式的结果为false的时候这条信息会被显示 let age -3 assert(age 0, A persons age cannot be less than zero) // 因为 age 0所以断言会触发 在这个例子中只有age 0为true的时候即age的值非负的时候代码才会继续执行。如果age的值是负数就像代码中那样age 0为false断言被触发终止应用。 如果不需要断言信息可以省略就像这样 assert(age 0) 注意 当代码使用优化编译的时候断言将会被禁用例如在 Xcode 中使用默认的 target Release 配置选项来 build 时断言会被禁用。 何时使用断言 当条件可能为假时使用断言但是最终一定要_保证_条件为真这样你的代码才能继续运行。断言的适用情景 整数类型的下标索引被传入一个自定义下标实现但是下标索引值可能太小或者太大。需要给函数传入一个值但是非法的值可能导致函数不能正常执行。一个可选值现在是nil但是后面的代码运行需要一个非nil值。 注意 断言可能导致你的应用终止运行所以你应当仔细设计你的代码来让非法条件不会出现。然而在你的应用发布之前有时候非法条件可能出现这时使用断言可以快速发现问题。
http://www.pierceye.com/news/633718/

相关文章:

  • 个人 建设图片分享网站网站开发设计步骤
  • 温州做阀门网站公司网站的建设时间怎么查
  • 好看的个人网站主页网站建设选择什么模式
  • 做内衣的网站校园网站建设网站
  • 学做网站论坛vip共享wordpress分类下文章排序
  • 文章内容网站系统网页编辑怎么打开
  • 建网站难吗查看关键词被搜索排名的软件
  • 同学会网站建设方案全免费无代码开发平台
  • 做网站给女朋友溧阳网站制作
  • 怎么注册电力建设公司网站wordpress用户注册邮箱验证
  • 用asp做的网站如何发布上海公司网站备案
  • 金华企业网站建设公司知识付费小程序源码
  • 网站建设十胜石公众号编辑器免费模板
  • 做网站用虚拟机还是服务器广东深广东深圳网站建设服务
  • 做网站设计所遇到的问题百度云盘官网登录入口
  • 网站建设合作流程图在北京做兼职哪个网站好
  • 哪些网站是phpwind做的广东各地最新病例
  • 精品网站设计wordpress第三方主题
  • 莱芜网站设计wordpress使用方法
  • 商城网站框架河南招标信息网
  • 卖辅助网站怎么做最大源码网站
  • 温州百度推广排名廊坊网站排名优化报价
  • 湖北建设信息网站百度一下百度主页
  • 做网站的销售员电话话术wordpress主页链接失效
  • 国外唯美flash个人网站欣赏微网站建设教程
  • 网站动态添加广告怎么做的东莞网站建设规范
  • 天津网站建设工作室seo网站推广实例
  • 网站建设销售工作职责外贸网站建设知识 列表
  • 电子商务网站建设教案wordpress置顶
  • 公司建立网站步骤wordpress修改社交标签