标签:
1 open Microsoft.FSharp.Core.Operators 2 3 #if ddddddddd 4 F#作为.NET语言的一种,和其他.NET语言一样,采用的是.NET的CTS 5 F#里独有的整数类型,长度取决于当前机器,无CTS类型对应:nativeint,unativeint 6 F#里独有的数值:infinity(正无穷),-infinity(负无穷),nan(非数值) 7 F#里的复合类型:元组,记录,联合(记录和联合均用type关键字定义) 8 CTS类型 F#里对应的假名 后缀 9 System.Boolean bool 10 System.SByte sbyte y 11 System.Byte byte uy 12 System.Int16 int16 s 13 System.UInt16 uint16 us 14 System.Int32 int32(简写int) l 15 System.UInt32 uint32 ul 16 System.Int64 int64 L 17 System.UInt64 uint64 UL 18 System.Single float32 f 19 System.Double float 20 System.Decimal decimal M 21 System.Char char 22 System.String string 23 #endif 24 // bool 25 let b = true 26 let b‘ = false 27 // sbyte 28 let sb = 127y 29 let sb‘ = -128y 30 // byte 31 let ub = 255uy 32 // int16 33 let si16 = 32767s 34 let si16‘ = -32768s 35 // uint16 36 let ui16 = 65535us 37 // int 38 let si32 = 2147483647l 39 let si32‘ = -2147483648l 40 // uint32 41 let ui32 = 4294967295ul 42 // int64 43 let si64 = 9223372036854775807L 44 let si64‘ = -9223372036854775808L 45 // uint64 46 let ui64 = 18446744073709551615UL 47 // float32 48 let fl32 = 3.402823e38f 49 let fl32‘ = -3.402823e38f 50 // float 51 let fl = 1.797693e308 52 let fl‘ = -1.797693e308 53 // decimal 54 let d = 2.0**96.0 //2的96次方 55 let d‘ = -2.0**96.0 56 // char和string 57 let c = ‘哈‘ 58 let s = "哈也和款哈伦裤哦ipo" 59 let c‘ = s.[4] //哈 60 // 元组 61 let tp = ( 435, 4.054, "safsadf" ) 62 let si16‘‘,fl‘‘,s‘‘ = tp 63 // 记录 64 type rcd = { name:string; age:byte; tall:float } 65 let ob:rcd = { name="风中的切变"; age=22uy; tall=177.0} //类似于实例化 66 let ob‘ = { name="风中的切变"; age=22uy; tall=177.0 } //类似于匿名类型 67 let ob‘‘ = { ob with name="风切变" } //仅与ob或ob‘的name字段不同 68 // 联合 69 type Ps = Name | Age | Tall | School//不指定字段类型 70 let name = Name 71 72 type Ps‘ = | Name of string//指定字段类型 73 | Age of byte 74 | Tall of float32 75 | School of string 76 let name‘ = Name("风中的切变") 77 let age = Age(22uy) 78 let tall = Tall(177.0f) 79 let school = School("中国民航大学") 80 81 type Ps‘‘ = | Profile of Ps‘//更灵活的定义 82 | Addr of string*int 83 | Sum of Ps‘*Ps‘‘ 84 let profile = Profile({ Name ="风中的切变"; 85 Age =22uy; 86 Tall =177.0; 87 School ="中国民航大学" }) 88 let addr = Addr("天津市东丽区",300300) 89 let summary = Sum({Name="sdas"; Age=34uy; Tall=651.0; School="sdfwef"}, profile) 90 91 92 #if sfsdf 93 let关键字有绑定的意思,但是上面的绑定定义的是值不可变变量 94 要定义值可变变量可以使用mutable关键字 95 ref关键字也可以定义值可变变量,但定义的变量是引用类型的 96 还能用Some关键字来定义类型可选的变量 97 可选类型的变量在基础类型上扩展,是用来描述现实世界里可能出现的空值,未知值,非值 98 None关键字就是用来描述基础类型无法描述的空值的,它和其他语言里的Null值不是一回事 99 因为None仅仅是描述,它不是一个值 100 #endif 101 let mutable abc = 74674 102 abc <- 4545646 // <-运算符是用于mutable变量的赋值运算符 103 104 let abc‘ = ref 4556 105 abc‘ := 465456 // :=是用于ref变量的赋值运算符 106 let sd = 464 107 abc‘ := !abc‘ + sd // !在这里起ref变量的引用的作用,表示这个变量是引用类型的变量 108 // 在流程控制的时候容易与其他语言的非运算符搞混,F#的非运算符是not 109 110 let mutable sm = Some(65545) // sm.Value = 65545 111 // sm.IsSome = true 112 // sm.IsNone = false 113 // 此时sm可以正常读写 114 sm <- None // sm.IsNone = true 115 // 如果试图读取sm程序就会抛出异常,因为sm没有值
标签:
原文地址:http://www.cnblogs.com/Windshear/p/4580552.html