码迷,mamicode.com
首页 > 其他好文 > 详细

F#之路1

时间:2015-06-16 14:32:20      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:

  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没有值

 

F#之路1

标签:

原文地址:http://www.cnblogs.com/Windshear/p/4580552.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!