zoukankan      html  css  js  c++  java
  • F#值语意

    // The following code demonstrates the use of reference
    // cells to enable partially applied arguments to be changed
    // by later code.
    
    let increment1 delta number = number + delta
    
    let mutable myMutableIncrement = 10
    
    // Closures created by partial application and literals.
    let incrementBy1 = increment1 1
    let incrementBy2 = increment1 2
    
    // Partial application of one argument from a mutable variable.
    let incrementMutable = increment1 myMutableIncrement
    
    myMutableIncrement <- 12
    
    // This line prints 110.
    printfn "%d" (incrementMutable 100)
    
    let myRefIncrement = ref 10
    
    // Partial application of one argument, dereferenced
    // from a reference cell.
    let incrementRef = increment1 !myRefIncrement
    
    myRefIncrement := 12
    
    // This line also prints 110.
    printfn "%d" (incrementRef 100)
    
    // Reset the value of the reference cell.
    myRefIncrement := 10
    
    // New increment function takes a reference cell.
    let increment2 delta number = number + !delta
    
    // Partial application of one argument, passing a reference cell
    // without dereferencing first.
    let incrementRef2 = increment2 myRefIncrement
    
    myRefIncrement := 12
    
    // This line prints 112.
    printfn "%d" (incrementRef2 100)
    
    
    
    -----------------
    let mutable x =1
    let x' =x
    x<-2
    x' (还是1,它拷贝了x的副本,因此不会被x的改变而改变s)
  • 相关阅读:
    HQ-day8 函数
    HQ-day7 随机数案例:随机出验证码,对照输入,判断是否正确
    HQ-day6 C#类
    获取用户IP 查找所在城市
    MVC 日常所用
    SQLServer·面试题
    关于WCF开发 相应流程注意事项
    存储过程更新
    存储过程删除举例
    存储过程添加举例
  • 原文地址:https://www.cnblogs.com/jiangzhen/p/fsharp_value_semantics.html
Copyright © 2011-2022 走看看