月份:2015年7月

Swift中文教程(三) 字符串和字符

一个字符串String就是一个字符序列,像”hello,world”,”albatross”这样的。Swift中的字符串是用String关键词来定义的,同时它也是一些字符的集合,用Character定义。   Swift的String和Character类型为代码提供了一个快速的,兼容Unicode的字符解决方案。String类型的初始化和使用都 是可读的,并且和C中的strings类似。同时String也可以通过使用+运算符来组合,使用字符串就像使用Swift中的其他基本类型一样简单。   1、字符串常量   在代码中可以使用由String预先定义的字符串常量,定义方式非常简单: let someString = “Some string literal value” 字符串常量可以包括下面这些特殊字符: 空字符,反斜杠,制表符t,换行符n,回车符r,双引号”和单引号’ 单字节Unicode字符,xnn,其中nn是两个十六进制数 双字节Unicode字符,unnnn,其中nnnn是四个十六进制数 四字节Unicode字符,Unnnnnnnn,其中nnnnnnnn是八个十六进制数… Read More

Swift中文教程(四) 集合类型

Swift 提供两种集合类型来存储集合,数组和字典。数组是一个同类型的序列化列表集合。字典是一个能够使用类似于键的唯一标识符来获取值的非序列化集合。   在Swift中,数组和字典的键和值都必须明确它的类型。这意味这数组和字典不会插入一个错误的类型的值,以致于出错。这也意味着当你在数组和字典中取回数值的时候能够确定它的类型。 Swift 使用确定的集合类型可以保证代码工作是不会出错,和让你在开发阶段就能更早的捕获错误。 note: Swift的数组 储存不同的类型会展示出不同的行为,例如变量,常量或者 函数和方法。更多的信息参见Mutability of Collections and Assignment 和 Copy Behavior for Collection Types.… Read More

PHP 多维数组搜索 PHP multi dimensional array search

array_column() 返回input数组中键值为column_key的列, 如果指定了可选参数index_key,那么input数组中的这一列的值将作为返回数组中对应值的键。 参数 input 需要取出数组列的多维数组(或结果集) column_key 需要返回值的列,它可以是索引数组的列索引,或者是关联数组的列的键。 也可以是NULL,此时将返回整个数组(配合index_key参数来重置数组键的时候,非常管用) index_key 作为返回数组的索引/键的列,它可以是该列的整数索引,或者字符串键值。 返回值 从多维数组中返回单列数组 范例 Example #1 从结果集中取出first names列 <?php //… Read More

Swift中文教程(五)控制流

Swift提供了所有C语言中相似的控制流结构。包括for和while循环;if和switch条件语句;break和continue跳转语句等。   Swift还加入了for-in循环语句,让编程人员可以在遍历数组,字典,范围,字符串或者其它序列时更加便捷。 相对于C语言,Swift中switch语句的case语句后,不会自动跳转到下一个语句,这样就避免了C语言中因为忘记break而造成的错误。 另外case语句可以匹配多种类型,包括数据范围,元组,或者特定的类型等。switch语句中已匹配的数值也可以被用在后续的case语句体 中,where关键词还能被加入任意的case语句中,来增加匹配的方式。   1、for循环 for循环可以根据设置,重复执行一个代码块多次。Swift中提供了两种for循环方式: for-in循环,对于数据范围,序列,集合等中的每一个元素,都执行一次 for-condition-increment,一直执行,知道一个特定的条件满足,每一次循环执行,都会增加一次计数   for-in循环 下面的例子打印出了5的倍数序列的前5项 C代码 for index in 1...5 {… Read More

Swift中文教程(六)函数

函数是执行特定任务的代码自包含块。给定一个函数名称标识, 当执行其任务时就可以用这个标识来进行”调用”。   Swift的统一的功能语法足够灵活来表达任何东西,无论是甚至没有参数名称的简单的C风格的函数表达式,还是需要为每个本地参数和外部参数设置复 杂名称的Objective-C语言风格的函数。参数提供默认值,以简化函数调用,并通过设置在输入输出参数,在函数执行完成时修改传递的变量。   Swift中的每个函数都有一个类型,包括函数的参数类型和返回类型。您可以方便的使用此类型像任何其他类型一样,这使得它很容易将函数作为参数传递给其他函数,甚至从函数中返回函数类型。函数也可以写在其他函数中来封装一个嵌套函数用以范围内有用的功能。   1、函数的声明与调用 当你定义一个函数时,你可以为其定义一个或多个命名,定义类型值作为函数的输入(称为参数),当该函数完成时将传回输出定义的类型(称为作为它的返回类型)。   每一个函数都有一个函数名,用来描述了函数执行的任务。要使用一个函数的功能时,你通过使用它的名称进行“调用”,并通过它的输入值(称为参数)来匹配函数的参数类型。一个函数的提供的参数必须始终以相同的顺序来作为函数参数列表。   例如在下面的例子中被调用的函数greetingForPerson,像它描述的那样 — 它需要一个人的名字作为输入并返回一句问候给那个人。 C代码 func sayHello(personName: String)… Read More

Swift中文教程(七) 闭包

闭包(Closures)是独立的函数代码块,能在代码中传递及使用。Swift中的闭包与C和Objective-C中的代码块及其它编程语言中的匿名函数相似。 闭包可以在上下文的范围内捕获、存储任何被定义的常量和变量引用。因这些常量和变量的封闭性,而命名为“闭包(Closures)”。Swift能够对所有你所能捕获到的引用进行内存管理。   NOTE 假如你对“捕获(capturing)”不熟悉,请不要担心,具体可以参考Capturing Values(捕获值)。   全局函数和嵌套函数已在 Functions(函数)中介绍过,实际上这些都是特殊的闭包函数 全局函数都是闭包,特点是有函数名但没有捕获任何值。 嵌套函数都是闭包,特点是有函数名,并且可以在它封闭的函数中捕获值。 闭包表达式都是闭包,特点是没有函数名,可以使用轻量的语法在它所围绕的上下文中捕获值。 Swift的闭包表达式有着干净,清晰的风格,并常见情况下对于鼓励简短、整洁的语法做出优化。这些优化包括: 推理参数及返回值类型源自上下文 隐式返回源于单一表达式闭包 简约参数名 尾随闭包语法   1、闭包表达式 嵌套函数已经在Nested… Read More

Swift中文教程(八) 枚举类型

枚举定义了一个常用的具有相关性的一组数据,并在你的代码中以一个安全的方式使用它们。 如果你熟悉C语言,你就会知道,C语言中的枚举指定相关名称为一组整数值。在Swift中枚举更为灵活,不必为枚举的每个成员提供一个值。如果一个值(被称为“原始”的值)被提供给每个枚举成员,则该值可以是一个字符串,一个字符,或者任何整数或浮点类型的值。 另外,枚举成员可以指定任何类型,每个成员都可以存储的不同的相关值,就像其他语言中使用集合或变体。你还可以定义一组通用的相关成员为一个枚举,每一种都有不同的一组与它相关的适当类型的值的一部分。 在Swift中枚举类型是最重要的类型。它采用了很多以前只有类才具有的特性,如计算性能,以提供有关枚举的当前值的更多信息,方法和实例方法提供的功能 相关的枚举表示的值传统上支持的许多功能。枚举也可以定义初始化,以提供一个初始成员值;可以在原有基础上扩展扩大它们的功能;并使用协议来提供标准功 能。 欲了解更多有关这些功能,请参见Properties, Methods, Initialization, Extensions, Protocols   1、枚举语法 使用枚举enum关键词并把他们的整个定义在一对大括号内: Java代码 enum SomeEnumeration { // enumeration… Read More

Swift中文教程(九) 类与结构

类与结构是编程人员在代码中会经常用到的代码块。在类与结构中可以像定义常量,变量和函数一样,定义相关的属性和方法以此来实现各种功能。   和其它的编程语言不太相同的是,Swift不需要单独创建接口或者实现文件来使用类或者结构。Swift中的类或者结构可以在单文件中直接定义,一旦定义完成后,就能够被直接其它代码使用。   注意:一个类的实例一般被视作一个对象,但是在Swift中,类与结构更像是一个函数方法,在后续的章节中更多地是讲述类和结构的功能性。   1、类和结构的异同 类和结构有一些相似的地方,它们都可以: 定义一些可以赋值的属性; 定义具有功能性的方法 定义下标,使用下标语法 定义初始化方法来设置初始状态 在原实现方法上的可扩展性 根据协议提供某一特定类别的基本功能 更多内容可以阅读:属性,方法,下标,初始化,扩展和协议等章节 类还有一些结构不具备的特性: 类的继承性 对类实例实时的类型转换 析构一个类的实例使之释放空间 引用计数,一个类实例可以有多个引用… Read More

SVG技术入门:线条动画实现原理

相信大家都见到过这样神奇的技术:一副线条构成的画能自动画出自己。非常的酷。Jake Archibald是这种SVG技术的首创者,并且写了一篇非常好的文章来描述它是如何实现的。Brian Suda也在24 Ways网站上讨论过它。 Polygon使用它在一篇设计方面的文章里创造出了非常神奇的效果。Codrops也做出了一些非常漂亮的例子。 其实我没有什么好增补的,只是想把这种技术说的更明白些,所以,在这里我要用我的方式把这种技术再讲解一遍。 1. 你有一个SVG图形 SVG技术入门:线条动画实现原理 2. 这个图形必须要有一个线条(stroke)属性 SVG技术入门:线条动画实现原理 3. 线条可以是虚线 我们可以用Illustrator制作,也可以用编程实现。我们用CSS来设置这些路径的样式(假定我们这里是inline SVG,或通过一个<object>),把它们变成虚线形式。 <svg ...> <path class="path"… Read More

如何使用CSS来修改SVG原点和制作SVG动画

SVG元素可以像HTML元素一样,使用CSS keyframes和animation属性或者CSS transitions来制作各种动画效果。   SVG元素可以像HTML元素一样,使用CSS keyframes和animation属性或者CSS transitions来制作各种动画效果。 大多数情况下,一个复杂的动画效果需要组合多种变换效果:旋转、倾斜、缩放以及他们的转换和过渡效果。多数情况下,SVG元素和HTML元素在使用transform和transform-origin上是相同的。但它们之间也有不同之处,SVG元素不能使用box model来管理,因此,它没有margin、padding、border或content boxes。 默认情况下,一个HTML元素的transform原点位于该元素的(50%, 50%)的地方,这里是元素的中心点。与之不同,SVG元素的transform原点位于当前用户坐标系统的原点上,这个点是画布的左上角位置。 假设我们有一个<div>和一个SVG <rect>元素: <!DOCTYPE html> … <div style="width: 100px;… Read More

SVG动画入门

今天我们继续来学习SVG动画方面的知识。一听到动画效果,你可能就觉的头都打啦。不要担心,SVG本身提供的动画属性非常容易使用,今天我们就来学习一下基础的知识。 SVG动画入门 基础知识 SVG中提供了animate的方法来制作动画属性: <svg> <rect width="200" height="200" fill="slategrey"> <animate attributeName="height" from="0" to="200" dur="3s"/> </rect> </svg>   在上面的代码中,我们在元素里面添加了一个<animate>的标签。<animate>包含了下面的一些属性。 attributeName 这个是用来指定元素要运动的属性… Read More