F# 入门(八):值类型/引用类型
2012-02-15 15:32
134 查看
总得来说,数据值存储在栈上面的称为值类型,而数据值存储在堆上面的称为引用类型。
对于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"];}
对于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"];}
相关文章推荐
- F#入门-第二章 F#基础-第十节 引用类型
- F#入门-第二章 F#基础-第二十一节 类型推理
- javascript快速入门9--引用类型
- 写一个方法对任意引用数据类型数组进行排序(入门级慎看,很难!!!)
- F# 入门(八): 值类型/引用类型
- 新手入门:C++下的引用类型
- JavaScript入门教程之引用类型
- JavaScript入门学习笔记(2)—— 引用类型
- F#入门-附录2 类型的符号
- C# 入门(2) 预定义类型、用户定义类型、值类型和引用类型、可空类型
- 挑战30天C++入门极限-C++下的引用类型
- F#入门-第二章 F#基础-第一节 基本数据类型
- F# 入门(三):F# 基础数据类型
- 【技术】C#入门:值类 4000 型和引用类型
- 新手入门:C++下的引用类型
- C#入门3.4——数据类型之引用类型
- C#forUnity快速入门(连载9)-C#值类型与引用类型
- JavaScript入门教程之引用类型
- c#入门学习-引用类型、值类型(装箱、拆箱)
- solidity基础入门知识(二)值类型与引用类型