xcode 中调用API帮助

  1、查看简单信息,选中后 按键 control +左键单击  或者按 右侧属性栏 里的帮助按钮

2、完整API,选中后 按键 control +左键双击

  3、查看类、函数等的注释,参数列表等,alt +左键单击

4、代码块注释与取消注释的快捷键 都是 command + /

  5、---不能用try...catch,但可用assertion 调试,有多个重载版本,assert(useDate<=0,"不符合则报错")

swift2.0中已引入do-catch语句

正文

初步印象

  1. 字符统一用unicode编码,区分大小写,有很多类似js,java的用法

  2. 类型安全:有可选类型,可选类型的值缺失时为 nil ,不再需要对一个值判别是否为Null,变量声明时已经确定

  3. 在swift中,数字字面量之间的运算,支持隐式类型转换,但数字类型的变量和常量之间的运算,则不再支持隐式类型转换。

  4. 标示符命名规则与C相同,但是 关键字可以做标示符

  let π = 3.14  等价于 let  `π` = 3.14

  var `class`="sdd"

  5. 字符串比对时加入了更多判断。不再只是简单地比对组成字符串的标量,而是会比对最终表现形式

  6. 字符和字符串都用双引号

  7. 句末不用写分号,但多条语句写在同一行时要加

  8. 变量声明用var, 常量用let,因此变量声明格式 变化较大  ,数据类型编译器会自动识别,一般不用显式声明

    let a = 2

    var b: Double = 4

    var aInt = 4, bInt = 7

     var p1 = 10,p2:Double

  9. swift 语法内容很少,使用也很方便。而且函数是第一性的,也有全局变量,面向对象,面向过程,函数式都可以尝试。就是太多与objective-c相关的东西。

  10. 声明字典,数组用 方括号,而不是花括号, 元组 用圆括号

  11. 接口关键字改做protocal,更形象了

12. 枚举和结构的功能增强了,可以加入属性,方法,也可以实现接口

  1. 一段Swift代码(可选类型的源码)
  1. enum Optional<T> : Reflectable, NilLiteralConvertible {
  2. case None
  3. case Some(T)
  4.  
  5. /// Construct a `nil` instance.
  6. init()
  7.  
  8. /// Construct a non-\ `nil` instance that stores `some`.
  9. init(_ some: T)
  10.  
  11. /// If `self == nil`, returns `nil`. Otherwise, returns `f(self!)`.
  12. func map<U>(f: @noescape (T) -> U) -> U?
  13.  
  14. /// Returns `f(self)!` iff `self` and `f(self)` are not nil.
  15. func flatMap<U>(f: @noescape (T) -> U?) -> U?
  16.  
  17. /// Returns a mirror that reflects `self`.
  18. func getMirror() -> MirrorType
  19.  
  20. /// Create an instance initialized with `nil`.
  21. init(nilLiteral: ())
  22. }
  23.  
  24. extension Optional : DebugPrintable {
  25.  
  26. /// A textual representation of `self`, suitable for debugging.
  27. var debugDescription: String { get }
  28. }

注意点

  1.   1 xcode swift 运算符 两边要加空格,否则多数时候会报错(赋值 比较)

关键字 共60个

 与声明有关的14个:class, deinit, enum, extension, func, import, init, let, protocol, static, struct, subscript, typealias, var

与语句有关的14个:break, case, continue, default, do, else, fallthrough, if, in, for, return, switch, where, while

 表达式和类型关键字12个:as, dynamicType, is, new, super, self, Self, Type, _COLUMU_ , _FILE_ , _FUNCTION_ , _LINE_

 特定上下文中使用的20个:associativity, didset, get, infix, inout, left, mutating, none, nonmutating, operator, override, postfix, precedence, prefix, rightset, unowned, unowned(safe), unowned(unsafe), weak, willset

补充:finaly private public internal dynamic

  @IBoutlet @IBAction  @UIApplicationMain @objc

  @autoclosure @autoclosure(escaping)

  @autoclosure:用在函数的里标记一个参数,然后这个参数会先被隐式的包装为一个closure,再把closure作为参数给这个函数。 从而实现对传递给这个参数的表达式延迟求值。

  1. func myassert(@auto_closure predicate : () -> Bool) {
  2. #if !NDEBUG
  3. if predicate() {
  4. abort()
  5. }
  6. #endif
  7. }
  8.  
  9. //调用
  10. myassert(someExpensiveComputation() != 42)

 

  1. func &&(lhs: LogicValue, @auto_closure rhs: () -> LogicValue) -> Bool {
  2. return lhs.getLogicValue() ? rhs().getLogicValue() : false
  3. }

 1.2 新增:@noescape:可以用在函数的闭包参数上,这意味着这个参数是唯一可被调用的(或者用在函数调用时以参数的方式出现),其意思是它的生命周期比函数调用的周期短,这有助于一些小小的性能优化,但最重要的是它屏蔽了闭包中对self.的需求。这使得函数的控制流比其他更加透明。在未来的beta版本中,标准库函数将普遍采用这种特性,比如autoreleasepool(): 

  1. func autoreleasepool(@noescape code: () -> ()) {
  2. pushAutoreleasePool()
  3. code()
  4. popAutoreleasePool()
  5. }

 使用在函数参数上的 @autoclosure属性现在含有@noescape新属性的功能,这个改进限制了@autoclosure作为控制流程以及惰性计算的能力。

  第二种形式。@autoclosure(escaping), 和@autoclosure有着同样的调用形式,但是它允许产生结果的闭包在实现中缓存

运算符

  优先级排序:

  最高:  ++, --, !, ~, - , +

  160:   << , >>

  150:   * , / , % , & , &* , &/ , &%

  140:   + , - , &+ , &- , | , ^

  135:   ..< , ...

  132:   is , as

  130:   < , <= , > , >= , == , != , === , !==

  120:   &&

  110:   ||,??

  100:   ?:

  90:   =, *=, /=, %=, +=, -=, <<=, >>=, &=, |=, ^=, &&=, ||=

swift特点

swift 赋值运算符并不能将自身作为一个值进行返回

  if x = y {} // 报错

  println(a = 3) // ()

swift 默认情况下算数运算符不容许值溢出,需使用溢出运算符

  &+,&*: 溢出加法 用于整数 上溢出 

   var max = UInt16.max // 65535

   println(max + 1)         // 报错

   println(max &+ 1)       // 0

   var max = Int16.max  // 32767

   println(max &+ 1)      // -32768

  &-,&*: 整数下溢出

  &/, &%  解决除数为0 的情况,xcode不识别了,已经被移除

swift中可以浮点数求余

  let a = 3.667 % 1.3   // 1.067

swift 中提供了 恒等运算符===,!==,用来测试两个对象的引用是否来自同一个对象实例

可选类型与拆封运算

  1. // nil不同于c中的NULL,它表示值缺失,而不是空指针
  2. // 只有可选类型的变量或常量才可接受nil,非可选类型的变量或常量不能接受nil
  3. func divide(a:Double,b:Double) ->Double? {
  4. if(b == 0){
  5. return nil
  6. }
  7. return a / b
  8. }
  9.  
  10. let result1 : Double? = divide(100,1)
  11. println(result1) // Optional(100.0)
  12. //强制拆封 (确定可选类型一定有值,可在读取它时通过拆封获取这个值)
  13. if result1 != nil{
  14. println(result1!) //100
  15. result1?.hashValue
  16. }
  17.  
  18. //隐式拆封(更方便访问,会自动解封,若此时数据为nil,则后续操作可能出错)
  19. let result2 : Double! = divide (100,0)
  20. println(result2) //nil
  21. // result2.hashValue // 报错
  22. result2?.hashValue // nil,添加问号则如果result2为nil就不会执行后续
  23. let result3 : Double! = divide (100,2)
  24. println(result3) //50.0
  25. result3.hashValue

?? 空值合并运算符

  1. // 对 a 进行判断,如果不为 nil 则解包,否则就返回 b
  2. // a 必须是 optional 的
  3. // b 必须和 a 类型一致
  4. // 相当于三目运算符的简化版
  5. var a: String? = "a"
  6. var b: String? = "b"
  7. var c = a ?? b // "a"
  8.  
  9. a = nil
  10. c = a ?? b // "b"
  11. b = nil
  12. c = a ?? b ?? "c" // "c"
  13.  
  14. //简化代码
  15. if allowEmpty || items?.count ?? 0 > 0 {
  16. }

区间运算符分为闭区间 (...) 和左闭右开区间 (..<)

  1. //1...100 等同于 1..<101,区间
  2. // 区间运算符其实返回的是一个 Range<T> 对象,是一个连续无关联序列索引的集合。
  3.  
  4. // .....
  5. let aNumber:Int = 3
  6. switch aNumber
  7. {
  8. case 0...5:
  9. println("This number is between 0 and 5")
  10. case 6...10:
  11. println("This number is between 6 and 10")
  12. default:
  13. println("This number is not between 0 and 10")
  14. }
  15.  
  16. // .....
  17. (1...10).map{
  18. "$\($0)" + ".00"
  19. }
  20.  
  21. // .generate() 遍历 Range<T> 中的值。
  22. var range = 1...4
  23. var generator = range.generate() // {startIndex 1, endIndex 5}
  24.  
  25. var item:Int?
  26. do{
  27. item = generator.next()
  28. println(item)
  29. }while(item != nil)
  30.  
  31. //区间运算符返回的是一个 ClosedInterval 或者 HalfOpenInterval 的东西,
  32. //类型只要是 Comparable 就可以了。所以我们也可以把 String 放到 ... 里。
  33.  
  34. let interval3 = 4.6...7.8
  35. interval3.contains(4.88) // true
  36.  
  37. //通过 String 的 ClosedInterval 来输出字符串中的小写字母:
  38. let test = "Hello"
  39. let interval = "a"..."z"
  40. // 交集
  41. let interval2 = interval.clamp("d"..."h")
  42.  
  43. for c in test.characters {
  44. if interval.contains(String(c)) {
  45. println("\(c)")
  46. }
  47. } //e l l o

+Inf, -Inf, NAN

  1. //let a = 23 / 0 // 报错,0不能做除数
  2.  
  3. let b = 23.0 / 0 // inf 正无穷大
  4. let bb = 23.0 / -0 // inf 正无穷大
  5. let c = -23.0 / 0 // -inf 负无穷大
  6. let cc = -23.0 / -0 // -inf 负无穷大
  7. let d = 0.0 / 0 // nan 非数
  8. let dd = 0.0 / -0 // nan 非数
  9.  
  10. b == bb // true
  11. c == cc // true
  12. d == dd // false

  

运算符重载

1. 非常实用,但也相当有风险,可读性问题,可使用字符为:/ = – + * % < > ! & | ^ . ~

2. 运算符函数即便写在类内部,定义后也会自动进入全局Global作用域,而不是作为类的一个成员函数

  1. struct Vector2D {
  2. var x = 1.0, y = 1.0
  3. }
  4.  
  5. // 实现结构类型Vector2D的加法
  6. func + (left: Vector2D, right: Vector2D) -> Vector2D {
  7. return Vector2D(x: left.x + right.x, y: left.y + right.y)
  8. }
  9. func *(vector2D: Vector2D,scalar:Double)->Vector2D{
  10. return Vector2D(x: vector2D.x * scalar, y: vector2D.y * scalar)
  11. }
  12. // 1.实现 组合赋值运算符 左参数要设置为inout,赋值运算没有返回值
  13. func += (inout left: Vector2D, right: Vector2D){
  14. left = left + right
  15. }
  16. // 3. 会把1,2都覆盖了,不会报错
  17. func += (left: Vector2D, right: Vector2D)->Vector2D{
  18. let left2 = left + right
  19. return left2
  20. }
  21. // 2.也可以有返回值,与1 不能并存
  22. func += (inout left: Vector2D, right: Vector2D)->Vector2D{
  23. left = left + right
  24. return left
  25. }
  26.  
  27. // 实现一个单目运算符,需要加前缀prefix或 postfix
  28. //
  29. prefix func -(vector2D:Vector2D)->Vector2D{
  30. return Vector2D(x: -vector2D.x, y: -vector2D.y)
  31. }
  32.  
  33. // 1.运算结果要保存,则要用inout
  34. prefix func ++(inout vector2D:Vector2D)->Vector2D{
  35. vector2D = vector2D + Vector2D(x: 1,y: 1)
  36. return vector2D
  37. }
  38. // 3.会覆盖1,2 。不保存运算结果,有返回值
  39. prefix func ++(vector2D:Vector2D)->Vector2D{
  40. let vector2D2 = vector2D + Vector2D(x: 1,y: 1)
  41. return vector2D2
  42. }
  43. // 2. 没有返回值
  44. prefix func ++(inout vector2D:Vector2D){
  45. vector2D = vector2D + Vector2D(x: 1,y: 1)
  46. }
  47.  
  48. postfix func ++(inout vector2D:Vector2D)->Vector2D{
  49. let _vector2D = vector2D
  50. vector2D = vector2D + Vector2D(x: 1,y: 1)
  51. return _vector2D
  52. }
  53.  
  54. // 非是对原有操作符的新应用,则要先声明其为操作符
  55. prefix operator +++ {}
  56. prefix func +++(var c: Vector2D) -> Vector2D{
  57. c += c
  58. c += Vector2D(x: 1.0, y: 1.0)
  59. return c
  60. }
  61. /// 自定义运算符需要遵循两段式,即需要先声明运算符
  62. /// infix / prefix / postfix
  63. /// associativity 表示结合性:left,rigth,none,默认为none
  64. /// 指的事和其他运算符优先级相同的情况下,是从左边开始计算还是右边
  65. /// precedence 表示优先级的数值,0...255,默认100
  66. /// assignment 定义组合运算符时需要用到这个,
  67. infix operator +-{ associativity left precedence 140}
  68. func +-(left:Vector2D,right:Vector2D)->Vector2D{
  69. return Vector2D(x:left.x + right.x,y:left.y - right.y)
  70. }
  71.  
  72. infix operator +-={associativity right precedence 140 assignment}
  73. func +-=(inout left:Vector2D,right:Vector2D)->Vector2D{
  74. left = Vector2D(x:left.x + right.x,y:left.y - right.y)
  75. return left
  76. }
  77.  
  78. var point = Vector2D(x: 3.0, y: 1.0)
  79. var v1 = Vector2D(x: 1,y: 1)
  80. ++v1 //{x 2, y 2}
  81. v1 //{x 2, y 2}
  82. v1++ //{x 2, y 2}
  83. v1 //{x 3, y 3}
  84. -v1 //{x -3, y -3}
  85. +++point //{x 7.0, y 3.0}
  86. point //{x 3, y 1}
  87.  
  88. v1+-point //{x 6, y 2}
  89. v1+-=point //{x 6, y 2}
  90. v1 //{x 6, y 2}
  91. let v3 = v1 += point
  92. v3
  93. v1

数据类型

swift中,不同于c,java等的基本数据类型那样单纯表示数值,

swift中 基本数据类型和集合全部由结构或枚举实现,虽然牺牲了性能,但是功能却强大了很多。

基本数据类型

  • 整型(Int8,Int16,Int32,Int64,Int(32位平台与Int32等宽,64位平台与Int64等宽),UInt8,UInt16,UInt32,UInt64,UInt)
  • 浮点型(Float, Double)float 32位,double64位,默认浮点数为double
  • 字符 let a:Character = "&"  let b = "\u{1fb03}"   字符也用双引号
  • 字符串  字符串拼接 let number = 9 ; let total = "\(number)加10等于\(Double(number) + 10)"
  • 布尔型 Bool 只有两个值true,false,不能用0,1代替

元组(tuple)类型(记录)

  var student1 = ("1001","张飞",20,96) 或 var student2 = (id:"1001",name:"张飞",age:20,score:96)

  或 var  student3 : (String,String,Int,Int) ; student3 = ("1001","张飞",20,96)

  访问元组字段: student1.0, student2.0,student2.id

枚举

结构

  1. typealias MyInt = Int
  2. var x :MyInt = 10

swift 中除类以外,所有基本数据类型,集合都是由结构实现,所有都可以调用构造器来初始化

  1. let x = Float() //0.0
  2. let y = Double() //0.0
  3. let z = Int() //0
  4. let aa = Bool()//false
  5. let bb = Character("S") //Character没有无参初始化
  6. let dd = String() //""
  7. let ee = [Int]()//0 elements
  8. let ff = [Int:String]()//0 key/value pairs
  9. let gg = Set<String>() //0 members
  10. let xxx: () = ()

swift里除了类以外的基本类型都是由结构体实现的,也既是除了类以外都是值引用类型

不再支持数字类型的隐式转换

  1. let pi = 3 + 0.1415926 // pi的类型推导为double(最大精度匹配原则)
  2.  
  3. let anInt = 10
  4. let aDouble = 3.14
  5. //var result = anInt + aDouble //报错
  6. var result = Double(anInt) + aDouble
  7.  
  8. let aChar:Character = "a"
  9. //var a:Character = anInt + aChar //报错
  10. //var b:Int = a //报错
  • Int8.min,Int8.max
  • 二进制:0b,八进制:0o,十六进制:0x,指数:1.56e-2; 十六进制指数 0x5.a2p2(0x5.a2 * 22)
  • swift 为方便阅读,整形,浮点均可添加多个零或下划线以提高可读性 var a = 000.0145 ; var b = 3_360_000
  1. // 整形
  2.  
  3. let a = 100
  4. a.byteSwapped
  5. a.bigEndian
  6. a.littleEndian
  7. a.toIntMax()
  8. a.value
  9. a.advancedBy(100)
  10. a.description

字符Character,字符串String 都使用""

 String 本质上是一个Struct,因此可以用构造器来创建字符串

  1. var str1 = "2sfer"
  2. var str2 = String()
  3. var str3 = String(count:5,repeatedValue:Character("f"))
  4. let character:Character = "a"
  5. let str4 = String(character)
  6. let characters:[Character] = ["c","b","a"]
  7. let str5 = String(characters)

字符串日常操作:是否包含某字符,rangOfString,前后缀,大小写切换,分割等

  1. let someone = "Joris Kluivers"
  2.  
  3. let end2 = someone.rangeOfString(" ")//5..<6
  4. if (end2 != nil) {
  5. let firstName = someone[someone.startIndex..<end2!.startIndex] //"Joris"
  6. } else {
  7. // no space found
  8. }
  9.  
  10. // 前后缀
  11. let doc = "Java.docx"
  12. if doc.hasSuffix(".docx"){}
  13. if doc.lowercaseString.hasPrefix("java"){}
  14.  
  15. // 大小写
  16. "Hello, playground".uppercaseString //HELLO, PLAYGROUND
  17. "Hello, playground".lowercaseString //hello, playground
  18.  
  19. // 分割
  20. "Hello, playground".componentsSeparatedByCharactersInSet(
  21. NSCharacterSet(charactersInString: "eo")
  22. ) //["H", "ll", ", playgr", "und"]
  23. "Hello, playground".componentsSeparatedByString("play")//["Hello, ", "ground"]
  1. var cafe = "cafe"
  2. // 插入字符
  3. cafe.insert("!", atIndex: cafe.endIndex) // "cafe!"
  4. // 插入字符串
  5. cafe.insertContentsOf(" is delicious".characters , at: cafe.endIndex.predecessor())//"cafe is delicious!"
  6.  
  7. //移除字符
  8. cafe.removeAtIndex(cafe.endIndex.predecessor()) // "!"
  9. //移除字符
  10. cafe.removeRange(cafe.startIndex.advancedBy(1)...cafe.startIndex.advancedBy(3))// "c is delicious"
  11.  
  12. //替换 ,移除字符单位置还在
  13. cafe.replaceRange(cafe.startIndex.advancedBy(1)...cafe.startIndex.advancedBy(3), with: "afe") //"cafe delicious"

swift中每一个字符都代表了一个可扩展字母集(Extended Grapheme Clusters)

每一个可扩展的字母集,又由一个或几个有序的Unicode标量的值(Unicode scalar value)所组成,以上这些构成了人类可读的字符。

  1. //形同c中用ascii编码,swift用unicode编码,
  2. 一个unicode标量占21bit
  3. 取值范围,U+0000U+D7FF和从 U+E000 U+10FFFF,不包括 UD800 U+DFFF
  4. let dollarSign = "\u{24}"
  5. let blackHeart = "\u{2665}"

String 用结构实现,是值类型,而NSString 用类实现,是引用类型

String.Characters.count,和 NSString.length 并不总是完全一样的值,因为前者统计的是有意义的Extended Grapheme Clusters 个数,后者是UTF-16编码 计数

  1. var word = "cafe"
  2. word.characters.count // 4
  3. (word as NSString).length // 4
  4.  
  5. word += "\u{301}" // "café", 组合了一个重音符号
  6. word.characters.count // 4
  7. (word as NSString).length // 5
  8.  
  9. word += "\u{301}" // "café́", 再组合了一个重音符号
  10. word.characters.count // 4
  11. (word as NSString).length // 6
  12.  
  13. word += "\u{301}" // "café́́", 再组合了一个重音符号
  14. word.characters.count // 4
  15. (word as NSString).length // 7
  16.  
  17. word += "\u{301}" // "café́́́", 再组合了一个重音符号
  18. word.characters.count // 4
  19. (word as NSString).length // 8
  20.  
  21. word += "\u{301}" // "café́́́́", 再组合了一个重音符号
  22. word.characters.count // 4
  23. (word as NSString).length // 9
  24.  
  25. word += "\u{20dd}" // "café́́́́⃝", 再组合了一个圆
  26. word.characters.count // 4
  27. (word as NSString).length // 10
  28.  
  29. var decomposed:Character = "\u{1112}\u{1161}\u{11ab}" // "한" 由三个Unicode标量组成,但是一个字符
  30.  
  31. var decomposedString:String = "\u{1112}\u{1161}\u{11ab}"
  32.  
  33. // 用 for in 遍历字符串
  34. for c in decomposedString.characters{
  35. print(c) // "한", 只有一个字符
  36. }
  37.  
  38. //用下标遍历
  39. let end = decomposedString.endIndex // 3 最后一个Unicode标量的位置+1
  40. var i = decomposedString.startIndex // 0
  41. i.advancedBy(1) // 3
  42.  
  43. for(var j = decomposedString.startIndex;j<end;j=j.successor()){
  44. print(decomposedString[j])
  45. }
  46.  
  47. let NSdecomposedString = decomposedString as NSString
  48. for var i = 0; i < NSdecomposedString.length; i++ {
  49. //3 times (4370, 4449, 4523)
  50. print(NSdecomposedString.characterAtIndex(i))
  51. }
  52.  
  53. let u1 = UnicodeScalar(4370) // 4370
  54. let u2 = UnicodeScalar(4449) // 4449
  55. let u3 = UnicodeScalar(4523) // 4523
  56. let c1 = Character(u1) // ᄒ
  57. let c2 = Character(u2) // ᅡ
  58. let c3 = Character(u3) // ᆫ
  59. let c = Character("\(c1)\(c2)\(c3)") // 한

swift中字符串的比较会 比对每个字符的语义和最终表现形式。而不是比对构成字符的标量

  1. let word1 = "caf\u{e9}" // "café" \u{e9} 带音调的拉丁字母e
  2. let word2 = "caf\u{65}\u{301}" // "café" \u{65}\u{301} 拉丁字母e + 一个重音符号
  3. word1 == word2 // true
  4. // 转化为 NSString 后比对
  5. (word1 as NSString) == (word2 as NSString) // false
  6.  
  7. let a1 = "\u{41}" // 拉丁字母 A
  8. let a2 = "\u{0410}" // 斯拉夫字母 A
  9. a1 == a2 // false

子字符串:无法用Int下标来访问String中的字符或字串,而使用String.Index

  1. var imageStr = "
  2. swift 学习(一)基础知识 (基本数据类型,操作符,流控制,集合)的更多相关文章

      1. jQuery学习笔记 - 基础知识扫盲入门篇
      1. jQuery学习笔记 - 基础知识扫盲入门篇 2013-06-16 18:42 by 全新时代, 11 阅读, 0 评论, 收藏, 编辑 1.为什么要使用jQuery? 提供了强大的功能函数解决浏览器 ...

      1. Ant学习-001-ant 基础知识及windows环境配置
      1. 一.Ant 概要基础知识 Apache Ant 是一个将软件编译.测试.部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发,用以构建应用,或结合其他开源测试工具例如 git.T ...

      1. 01-Java基础知识:数据类型与变量、标识符、运算符、表达式
      1. Java基础知识:数据类型与变量.标识符.运算符.表达式 一.数据类型 Java定义了基本数据类型.引用数据类型.自定义类型. 八种基本数据类型:byte (1). short (2).  int ( ...

      1. 学习javascript基础知识系列第二节 - this用法
      1. 通过一段代码学习javascript基础知识系列 第二节 - this用法 this是面向对象语言中的一个重要概念,在JAVA,C#等大型语言中,this固定指向运行时的当前对象.但是在javascr ...

      1. 学习javascript基础知识系列第三节 - ()()用法
      1. 总目录:通过一段代码学习javascript基础知识系列 注意: 为了便于执行和演示,建议使用chrome浏览器,按F12,然后按Esc(或手动选择)打开console,在console进行执行和演示 ...

      1. 关于图计算&图学习的基础知识概览:前置知识点学习(Paddle Graph Learning (PGL))
      1. 关于图计算&图学习的基础知识概览:前置知识点学习(Paddle Graph Learning (PGL)) 欢迎fork本项目原始链接:关于图计算&图学习的基础知识概览:前置知识点学习 ...

      1. Python基础知识(六)------小数据池,集合,深浅拷贝
      1. Python基础知识(六)------小数据池,集合,深浅拷贝 一丶小数据池 什么是小数据池: ​ 小数据池就是python中一种提高效率的方式,固定数据类型使用同一个内存地址 代码块 : ​ 一个文 ...

      1. [SQL] SQL 基础知识梳理(七)- 集合运算
      1. SQL 基础知识梳理(七)- 集合运算 目录 表的加减法 联结(以列为单位) 一.表的加减法 1.集合:记录的集合(表.视图和查询的执行结果). 2.UNION(并集):表的加法 -- DDL:创建表 ...

      1. 学习Python3基础知识过程中总结
      1. print()中end==""的用法 例子:用Python3输出九九乘法表: for i in range(1,10): for j in range(1,i+1): s=i*j ...

      1. three.js学习笔记--基础知识
      1. 基础知识 从去年开始就在计划中的three.js终于开始了 历史介绍 (摘自ijunfan1994的转载,感谢作者) OpenGL大概许多人都有所耳闻,它是最常用的跨平台图形库. WebGL是基于Op ...

    1.  
    2. 随机推荐

        1. Object-C中self和super的区别
        1. self与super的区别 原文CSDN evilotus 有所整理 **** 在ObjC中的类实现中经常看到这两个关键字"self"和"super",以以前o ...

        1. 【转】最长回文子串的O(n)的Manacher算法
        1. Manacher算法 首先:大家都知道什么叫回文串吧,这个算法要解决的就是一个字符串中最长的回文子串有多长.这个算法可以在O(n)的时间复杂度内既线性时间复杂度的情况下,求出以每个字符为中心的最长回文 ...

        1. CF722D. Generating Sets[贪心 STL]
        1. D. Generating Sets time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

        1. 使用 Flash Builder 的 Apple iOS 开发过程
        1. 使用 Flash Builder 的 Apple iOS 开发过程   iOS 开发和部署过程概述 构建.调试或部署 iOS 应用程序前的准备工作 在测试.调试或安装 iOS 应用程序时选择的文件 将 ...

        1. C# Interlocked 笔记
        1. 无锁代码下,在读写字段时使用内存屏障往往是不够的.在 64 位字段上进行加.减操作需要使用Interlocked工具类这样更加重型的方式.Interlocked也提供了Exchange和Compare ...

        1. 基于tiny6410的madplay播放器的移植
        1. 在移植madplay之前需要先将所需要的库移植到开发板的文件系统中. 现在每个解压后的文件夹中创建一个文件夹 zlib-1.1.4.tar.gz 解压:tar xvzf  zlib-1.1.4.tar ...

        1. ConcurrentHashMap是如何提高并发时的吞吐性能
        1. 为并发吞吐性能所做的优化 ConcurrentHashMap使用了一些技巧来获取高的并发性能,同时避免了锁.这些技巧包括: 为不同的Hash bucket(所谓hash bucket即不同范围的key ...

        1. [No00000F]Excel快捷键大全 Excel2013/2010/2007/2003常用快捷键大全
        1. 一个软件最大的用处是提高工作效率,衡量一个软件的好坏,除了是否出名之外,最主就是能否让一个新手更快的学会这个软件和提高工作速度.就拿Excel表格来说吧,平常办公中我们经常会用它来制作表格,统计数据或 ...

        1. uva11025 The broken pedometer
        1. 6741870 ksq2013 UVA 11205 Accepted   60 C++11 5.3.0 1002 2016-08-04 14:25:22 题目大意如下:给定n个LED灯串,每个灯串由p ...

        1. 纯js代码实现手风琴特效
        1. 我知道现在大多数前端开发人员都在使用jQuery等第三方的库来进行开发,这不仅节约了时间,也让效率大大的提高,并让公司的效益增加,何乐而不为呢? 但是,这也会有一定的缺点,比如jQ比js慢,尤其在大型 ...