小编Sim*_*rey的帖子

为什么 f# 会在没有警告或错误的情况下改变不可变变量?

以下脚本改变了不可变变量 jar,没有错误或警告。这是一个错误吗?还是我的理解有问题?

请解释为什么我不需要使用 mutable 关键字。

旁白:FSharp.Data.Http.RequestString 的 cookieContainer 参数在定义中未标记为可变:https://github.com/fsprojects/FSharp.Data/blob/134a08cda3acb8e746bb25d03692d90ee5caabab/src/Net/Http.fs

#r "System.Xml.Linq.dll";;
#r "nuget:FSharp.Data";; 

open FSharp.Data

let url="http://www.google.com"
let uri=System.Uri(url)

// no mutable keyword here
let jar=System.Net.CookieContainer()

// Count is 0
printf $"Pre-request cookie count is: {jar.GetCookies(uri).Count}\n"

let r = Http.RequestString(url, cookieContainer=jar) 

// Count is 1
printf $"Post-request cookie count is: {jar.GetCookies(uri).Count}\n" 
Run Code Online (Sandbox Code Playgroud)

#r "System.Xml.Linq.dll";; #r "nuget:FSharp.Data";;

f# f#-data

2
推荐指数
1
解决办法
153
查看次数

标签 统计

f# ×1

f#-data ×1