为什么将[2..3..10]被解释为[2; 5; 8]
问题描述:
当我声明以下列表为什么将[2..3..10]被解释为[2; 5; 8]
let list = [2..3..10]
F#交互式将它解释为包含[2; 5; 8]
列表。 的控制台输出是:
let list = [2..3..10]
;;
val list : int list = [2; 5; 8]
什么是数学的背后?我看不出输入与输出有关。
答
从The F# Language Specification:
涉及表达式1 .. expr2的范围表达式翻译成的 用途(..)运算符,以及涉及expr1的.. .. expr1的被表达式3 翻译成的用途(.. ..)运营商。 (.. ..)运算符 使用expr2的增量为开始 (expr1)和finish(expr3)值之间的值范围生成一个IEnumerable < _>。
或者只是:
[start .. step .. stop
]
[开始..一步..停止] –
,你会想到什么输出? '[2; 5; 8; 11]'? – sepp2k
谢谢@FoggyFinder,现在它是有道理的。随意写一个完整的答案,所以我可以将问题标记为已回答 – Ronin