我该怎么做?我希望结构var sID;
function init() {
PageMethods.GetSessionID(OnSuccess);
}
function OnSuccess(response, userContext, methodName) {
sID = response;
alert(sID);
}
能够生成一个列表,并保证始终至少包含一个列表。
我知道如果我想生成一个大小为n的列表,我可以这样做:
sevenList :: Gen [Integer]
但这还不够,因为如果我生成一个长度为10的列表并且没有生成7,我必须继续,但目前它不会。
答案 0 :(得分:6)
你可以决定生成两个列表,然后构建一个列表,在这个列表中我们将列表夹在它们之间夹着七个。
例如:
FROM debian:stretch
RUN apt update
RUN apt install -y wget
RUN wget https://stackoverflow.com/
# I know the wget is useless. Is just an example :)
CMD ["echo", "hello-world"]
前两个语句因此生成两个任意genSevenList :: Gen [Integer]
genSevenList = do
la <- arbitrary
lb <- arbitrary
return $ la ++ 7 : lb
列表,然后我们[Integer]
。因此,我们在return $ la ++ 7 : lb
前加lb
,并将其附加到7
。
您还可以生成一个任意列表,将其拆分为随机索引,然后将这些部分连接在一起,如上所述。例如:
la
虽然两者都能够生成所有可能的列表,例如@leftroundabout说,但是第二个实现更有可能出现更短的列表,因为genSevenList :: Gen [Integer]
genSevenList = do
l <- arbitrary
k <- choose (0,length l)
let (la,lb) = splitAt k l
return $ la ++ 7 : lb
两个调用的几率都会产生一个短列表(或者一个空列表)并不是那么大。