我正在尝试以下代码:
a = [1,2,3,4]
a.each do
puts "Removing #{a.last}"
a.pop
end
Run Code Online (Sandbox Code Playgroud)
但是没有弹出所有四个数字我只得到第一个3.确实,做一些像放置a.length的东西返回1并且放置它显示元素"1"仍然存在.
我该如何正确使用该方法?(我使用的是Ruby 2.0).
我有一个FsCheck
问题:
我有以下记录类型(我事先说,我被告知我的单案例 DU 可能是一种矫枉过正,但我发现它们描述了域,因此是必要的,我会除非必须,否则不要删除它们):
type Name = Name of string
type Quality = Quality of int
type ShelfLife = Days of int
type Style = Plain | Aged | Legendary
type Item = {
Name: Name
Quality: Quality
ShelfLife: ShelfLife
Style: Style
}
Run Code Online (Sandbox Code Playgroud)
假设我已经定义了函数repeat: Int -> ('a -> 'a) -> 'a
和decreaseQuality: Item -> Item
,我想编写一个FsCheck
检查不变量的测试:任何样式为 OTHER THAN Legendary 的项目,在 100 天过去后,质量为 0。
我的问题是我不知道以下内容FsCheck
:
1. 如何定义一个自定义生成器来生成样式不是传奇的项目?相比之下,我如何仅定义Legendary 类型的项目(以测试两种类型)?
我调查过: …
在附加的代码片段中,目标是接收用户输入,并且根据它是否为整数,返回整数或递归调用函数,直到给出有效整数.
def verify_input(msg, str_exp=True, req_str=None):
user_input = input(msg)
if str_exp:
pass # TODO: implement later
else:
try:
return int(user_input)
except ValueError:
verify_input("Enter a whole number please. ", str_exp=False)
Run Code Online (Sandbox Code Playgroud)
如果用户在第一个函数调用上正确响应(即整数),则确实从函数返回整数.
问题是,如果用户行为不端并且首先没有响应整数,只在后续尝试中给出整数,我可以看到,使用调试器,该try
子句总是转到except
子句...即使第二次调用是整数.
综上所述:
verify_input(12)#=>返回12
verify_input("Hello")#=>返回调用verify_input ---> user给出答案"12"=>返回None
.
提前致谢.
我创建了以下记录,以尝试将C#类转换为F#:
type Days = Days of int
type Value = Value of int
type Item = {
Name: string
Expires: Days
Value: Value
}
Run Code Online (Sandbox Code Playgroud)
问题是我还需要每个Item都有一个“方法”,以运行另一个尚未定义的函数,该函数handleDevalue
作用于Item本身以操纵Item的Value
值。
该handleDevalue
功能是依赖于Expires
这样每个项目的实施,这将是不同的,唯一的共同点是函数的名称和签名(该项目的性质和Item -> Item
)。
在C#代码上,我正在翻译此方法,该方法abstract
在Item
类上定义,并在实例化的每个项目(其中每个项目都是从继承的子类Item
)中覆盖。
我尝试过的,直到现在都没有成功:
...} with abstract handleDevalue: Item -> Item
。handleDevalue
作为功能添加到记录中:{... HandleDevalue: Item -> Item...}
。Expires
属性。显然,记录的字段彼此独立,此外...函数将如何“知道”要对哪个项目执行操作(应该对项目本身进行操作)?this
在“实例化”记录时(即no {...handleDevalue = fun this -> …