当前位置:编程学习 > 网站相关 >>

F# 入门(八):值类型/引用类型

总得来说,数据值存储在栈上面的称为值类型,而数据值存储在堆上面的称为引用类型。
 
对于F#而言,每个声明的值都会在创建时被初始化,因为在函数式的编程中,值被声明后就是不可变的。下面看看怎么获取某个值的情况:
 
Unchecked.defaultof<'a>
 
获取'a的默认值
 
typeof<'a>
 
返回描述'a的System.Type对象
 
sizeof<'a>
 
返回'a在栈上的空间大小
 
 
 
在F#中,默认所有值是不能更改的,那么怎么样来改变一个值呢,一个方法是用Ref引用单元(主要用于引用类型的更改),还有用mutable关键字(主要用于值类型的更改),下篇会讲关于mutable。
 
 
 
这里使用ref将值变为引用类型,同时,使用!读取引用类型的值,使用:=写入引用类型的值。让我们来看看例子:
 
1)
 
//将引用类型的值绑定给变量a
 
> let a = ref "hello";;
 
val a : string ref = {contents = "hello";}
 
//读取a的值
 
> !a;;
 
val it : string = "hello"
 
//写入a的值然后显示
 
> a := "world";;
 
val it : unit = ()
 
> !a;;
 
val it : string = "world"
 
2)
 
//对于引用类型改变值
 
> let Days =
 
    ref [ "Monday"; "Tuesday";
 
          "Wednesday"; "Thursday";
 
          "Friday";  "Saturday";
 
          "Sunday";]
 
//过滤掉星期天
 
// 通过(!)获取Days的,再通过(:=)赋予新的值
 
Days := !Days |> List.filter(fun d -> d <> "Sunday");;
 
val Days : string list ref =
 
  {contents =
 
    ["Monday"; "Tuesday"; "Wednesday"; "Thursday"; "Friday"; "Saturday"];}
 
补充:综合编程 , 其他综合 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,