ASP.NET网站制作之【F#2.0系列】利用选项(Option)
以前很热炒跨平台,主要是由于硅谷挑战微软霸主地位的热情,但是冷静下来后,跨平台往往不是那么一回事。假设你有个软件,所谓的跨平台,你只需要为第二个平台上重新编译一次就行了,这样很难么?利用选项(Option)type T option =
None
Some of T
上面看一个例子:
> let people = [ ("Adam", None);
("Eve" , None);
("Cain", Some("Adam","Eve"));
("Abel", Some("Adam","Eve")) ];;
val people : (string * (string *string) option) list
利用形式婚配(Patternmatching)来天生option:
> let showParents (name,parents) =
match parents with
Some(dad,mum) -> printfn "%s has father %s, mother %s" name dad mum
None -> printfn "%s has no parents!" name;;
val showParents : (string * (string * string) option) -> unit
> showParents people.;;
Adam has no parents
val it : unit = ()
Option的一些有效的办法:
办法 范例 形貌
Option.get Toption->T 前往一个Some范例的值。或抛非常
Option.isNone Toption->bool 前往一个Option是不是是None
Option.map (T->U)->Toption->Uoption 假如是None,就前往None。假如是Some(x),前往Some(fx),f是给定的函数
Option.iter (T->unit)->Toption->unit 对Some范例的Option实行指定的办法。
一些例子:
> Option.map(fun x->x) a;;
val it : (string * string) option = Some ("aa", "bb")
> Option.map(fun x-> match x with (first,second) -> first) a;;
val it : string option = Some "aa"
> Option.map(fun x-> match x with (first,second) -> second) a;;
val it : string option = Some "bb"
>
> Option.iter(fun x-> match x with (first:string,second) -> printfn "%s" (first+second)) a;;
aabb
val it : unit = ()
>
利用Option范例举行把持
看这个例子:
let fetch url =
try Some (http url)
with :? System.Net.WebException -> None
http函数是在之前章节界说的猎取html的谁人办法。在None的情形下抛出一个exception。乐成的会见会前往一个Some值,也就是Option范例的值。然后我们就能够利用Option值来举行形式婚配:
> match (fetch "http://www.nature.com") with
Some text -> printfn "text = %s" text
None -> printfn "**** no web page found";;
text = <HTML> ... </HTML> (note: the HTML is shown here if connected to the web)
val it : unit = ()
那做企业软件是不是最好用J2EE? 关于ASP.NET功能上,ASP.NET比微软以前的ASP(96年出现)有更强大的library,更好的稳定性。ASP.NET可以使用.NETFramework中所有组件(也就是说.NET能实现的,ASP.NET一样能实现)。 业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高,你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。 碰到复杂点的问题都不知道能不能解决,现在有点实力的公司都选择自已在开源的基础上做开发。但没听说过有人在IIS上做改进的,windows、sqlserver集群方面的应用也很少见。 ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp)。 可以看作是VC和Java的混合体吧,尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性。 有一丝可惜的是,这个系列太强了,Java阵营的朋友根本就是哑口无言...争论之火瞬间被浇灭,这不是我想这么早就看到的,但是值了。 由于JSP/Servlet都是基于Java的,所以它们也有Java语言的最大优点——平台无关性,也就是所谓的“一次编写,随处运行(WORA–WriteOnce,RunAnywhere)”。除了这个优点,JSP/Servlet的效率以及安全性也是相当惊人的。 ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象。 业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高,你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。
页:
[1]