飘灵儿 发表于 2015-1-16 22:20:35

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?

变相怪杰 发表于 2015-1-19 09:06:23

关于ASP.NET功能上,ASP.NET比微软以前的ASP(96年出现)有更强大的library,更好的稳定性。ASP.NET可以使用.NETFramework中所有组件(也就是说.NET能实现的,ASP.NET一样能实现)。

飘灵儿 发表于 2015-1-24 19:16:44

业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高,你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。

透明 发表于 2015-2-2 12:43:26

碰到复杂点的问题都不知道能不能解决,现在有点实力的公司都选择自已在开源的基础上做开发。但没听说过有人在IIS上做改进的,windows、sqlserver集群方面的应用也很少见。

金色的骷髅 发表于 2015-2-7 20:15:52

ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp)。

admin 发表于 2015-2-23 10:28:34

可以看作是VC和Java的混合体吧,尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性。

精灵巫婆 发表于 2015-2-23 10:28:34

有一丝可惜的是,这个系列太强了,Java阵营的朋友根本就是哑口无言...争论之火瞬间被浇灭,这不是我想这么早就看到的,但是值了。

再现理想 发表于 2015-3-7 08:11:41

由于JSP/Servlet都是基于Java的,所以它们也有Java语言的最大优点——平台无关性,也就是所谓的“一次编写,随处运行(WORA–WriteOnce,RunAnywhere)”。除了这个优点,JSP/Servlet的效率以及安全性也是相当惊人的。

小魔女 发表于 2015-3-14 15:58:49

ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象。

只想知道 发表于 2015-3-21 12:16:47

业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高,你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。
页: [1]
查看完整版本: ASP.NET网站制作之【F#2.0系列】利用选项(Option)