[英]How to destucture a tuple of records to private values
如何使用模塊級let綁定將兩個私有值綁定到元組中的記錄?
type private T = {F:int}
let private a = {F=1}
let private b, private c = {F=2}, {F=3}
在這個例子中, a
工作正常,但b
和c
的綁定都失敗並出現錯誤:
錯誤FS0410:類型
'T'
可訪問性低於值,成員或類型'val patternInput : T * T'
它用於
要了解為什么這不起作用,請使用Reflector對其進行反編譯。 你正在創建一個元組並立即對其進行解構。 無論如何,在調試模式下,中間元組被創建為封閉類型的internal
字段(模式匹配的實現細節)。 當然,這使得它比T
更容易訪問, T
是private
。 我很想知道這是不是一個bug(好像是這樣)。
它變得怪異......
以下編譯無法編譯(語法錯誤),但如果類型是公共的並且使用let
而不是let private
,則編譯正常。
type private T = {a:int; b:int}
let private t = {a=0; b=0}
let private {a=a; b=b} = t //syntax error
type private U() = class end
let private ul = [U()]
let private [u] = ul //syntax error
我認為在模塊級私有let
綁定中進行解構有一些問題是安全的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.