F#入門學習(四)

  1. printfn的使用
    寫printfn,主要是爲了方便查閱

    3+3
    //val it : int = 6
    
    3+3
    printfn "%x" it;;
    

    //6
    val it : unit = ()
    如果不加;;就運行不出來,必須加;;,是什麼意思呢?
    F#使用;;加上回車表示向交互環境提交輸入語句。 提交後交互環境執行這些語句。it是交互環境下系統默認名稱。不提交系統不知道it是什麼。


    一般來說printfn 後面跟着:%[flags] [width] [.precision][type]
    [ ]的意思是可以用也可以不用。
    flag可以用哪些值呢?又代表什麼意思呢?
    可以查閱
    width指:結果的最小寬度的整數
    %6d 就是添加空格使結果滿足6個字符的要求(這個沒有用到flags)
    6就是width
    d是下面要講的type


    type又可以用哪些值呢?又代表什麼意思?
    可以查閱


  1. 註釋和續行符
  • 註釋:這個不多說,看圖
    可以參考
  • 續行:F#使用縮格方式表示語句隸屬關係(這是在visual studio下的方法)
    又有:在交互環境下(也就是黑底白字命令行那種),使用;;表示一句結束,不加;;就表明無論如何都是一句話,即使在另一行也屬於前一條語句。
    vs中的例子:
    let add x y = 
         x + y
         //val add : x:int -> y:int -> int
    let x = add
               			8
              		    9
     //val x : int = 17
    
    8和9必須縮格在add後面表示是add的子部分,否則報錯。
  1. 運算符
  • 算數運算符,優先級從高到低排列
    在這裏插入圖片描述
    這就是我們平常使用的運算規則

  • 關係運算符
    在這裏插入圖片描述

    let x1 = 9 >= 9
    //val x1 : bool = true
    
    let Gtfun x y = x > y
    let x2 = Gtfun 8 9
    //val Gtfun : x:'a -> y:'a -> bool when 'a : comparison
    val x2 : bool = false
    

    根據前面學的泛型,必須是相同的泛型才能比較,才能得出bool類型。

  • 邏輯運算符
    在這裏插入圖片描述

    let a = true
    let b = false 
    let  y1 = a&&b
    let y2 = a||b
    

    //val a : bool = true
    //val b : bool = false
    //val y1 : bool = false
    //val y2 : bool = true

  • 位運算符
    在這裏插入圖片描述

    let x = 0x22
    //val x : int = 34 轉換成十進制就是34,二進制00100010
    let y = 0xab
    //val y : int = 171 同理十進制是171,二進制101010111
    printfn "%x"x
    printfn "%d"x
    //22
    //34
    //val it : unit = ()  代表最後printfn的特徵是unit類型
    
    let x1 = ~~~x
    printfn " %x"x1
    // ffffffdd 求反的16進制結果對應十進制的-35
    //val x1 : int = -35 按位求反之後的值
    //val it : unit = ()
    
    let x2 = x &&& y
    printfn"%x"x2
    //22 按位與運算後的值,注意這是16進制,下面纔是對應的十進制
    //val x2 : int = 34
    //val it : unit = ()
    
    let x3 = x|||y
    printfn"%x"x3
    //ab 按位或後的16進制結果
    //val x3 : int = 171
    //val it : unit = ()
    
    let x4 = x^^^y
    printfn"%x"x4
    //89 按位異或後的16進制結果
    //val x4 : int = 137
    //val it : unit = ()
    
    let x5 = x<<<2
    printfn"%x"x5
    //88 將x的二進制值左移兩位,空位補0
    //val x5 : int = 136
    //val it : unit = ()
    //以下是驗證
    let x6 = 0b10001000 //這個x是二進制左邊去掉兩個數,右邊加上兩個0的結果,**0b**表示二進制
    printfn"%x"x6
    //88
    //val x6 : int = 136
    //val it : unit = ()
    

    上面的運算都是基於二進制運算的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章