• 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)
  • 相关阅读:
    jstree 实现异步加载子节点
    创建 widget 窗口小组件
    Android(permission)常用权限
    Android 之 补间动画
    补间动画之 AlphaAnimation
    (转)向对象开发与面向组件开发的区别
    Android Drawable文件夹对应像素密度
    Notification(通知) 简单用法
    AlarmManager 用法
    关于IntentService 用法
  • 原文地址:https://www.cnblogs.com/jiangzhen/p/fsharp_value_semantics.html
Copyright © 2020-2023  润新知