我需要帮助理解以下陈述:
calendar = Calendar.getInstance();
// CalendarState for DayOfWeek: Sunday 1, Monday 2, ... Saturday 7
int currentDay = calendar.DAY_OF_WEEK;
logger.severe("CURRENT DAY OF WEEK: " + currentDay);
具体来说,我对使用括号的规则感到困惑。
注意
我对F#一无所知。所以请原谅我的无知。
答案 0 :(得分:4)
这些是F#
中使用的括号()
(1, 2) // Tuple (separator is a comma)
() // empty tuple, called unit
[]
[ 1; 2 ] // List
[] // List.empty
[| 1; 2 |] // Array
[||] // Array.empty
{}
seq { yield 1; yield 2 } // Sequence
Seq.empty // empty Sequence, not {}
async { return 1 } // Computation Expressions, e.g. async
type record = // Record type definition
{ Name : string
Age : int
}
<>
type A<'T> = A of 'T
可以很容易地组成类型
let composition =
async { return
[|
[ ("A",1); ("B",2) ]
[ ("C",3) ]
|]
}
// val composition : Async<(string * int) list []>
答案 1 :(得分:2)
打破它。
let step1 = [ for i in 1..4 -> i, true ]
let step2 = step1 |> Map.ofSeq
然后你可以阅读&#34;签名&#34;每一步:
val step1 : (int * bool) list = [(1, true); (2, true); (3, true); (4, true)]
val step2 : Map<int,bool> = map [(1, true); (2, true); (3, true); (4, true)]
然后,步骤1是一个列表,因此括号用于列表(列表表达式)。
在列表中有一个int和bool(int * bool)的元组(代数数据类型,产品类型)(注意*为&#39; product&#39;)。
step2是一个Map,是从序列创建的,list也是一个序列,这就是为什么它起作用的原因(或者列表支持序列接口)。 ofSeq
应该是我猜的总赠品。
使用Map.ofList
可能会减少混淆,但等效
let step1 = [ for i in 1..4 -> i, true ]
let step2 = step1 |> Map.ofList
val step1 : (int * bool) list = [(1, true); (2, true); (3, true); (4, true)]
val step2 : Map<int,bool> = map [(1, true); (2, true); (3, true); (4, true)]
您可以阅读一些文档,例如: https://msdn.microsoft.com/en-us/library/dd233230.aspx
现在把我的证书从你的课程发给我......; - )
答案 2 :(得分:1)
[ sequence-expression ]
创建一个列表
其他类型的括号创建不同类型的集合,例如。 <{3}}或seq { ... }
分别用于序列(IEnumerable<T>
)或数组。
可以在括号内使用任何返回集合的表达式吗?
排序。创建各种集合(例如yield value
)有很大的支持,包括合并子集合(yield! expression
)。
对于快速回答真的太过分了。有关F#Reference的链接将向您展示其范围。