我遇到以下问题:
写一个接收三个Ints的函数,如果它们都是正数则求和,否则返回0(零)。
我所做的是以下内容:
sum' :: int -> int -> int -> int
sum' x y z = if x >= 0, y >= 0, z >= 0 then x+y+z else 0
我不知道如何在if上创建多个条件,不确定是否使用逻辑“连接器”(如Java中的||
或&&
)或者是否在与我写的代码类似。
答案 0 :(得分:7)
可以通过多种方式完成。
例如,使用&&
:
sum' :: Int -> Int -> Int -> Int
sum' x y z = if x >= 0 && y >= 0 && z >= 0 then x+y+z else 0
或使用all
和列表:
sum' :: Int -> Int -> Int -> Int
sum' x y z = if all (>= 0) xs then sum xs else 0
where xs = [x, y, z]
答案 1 :(得分:4)
或者使用警卫,这会使它看起来几乎完全像定义的人类版本:
@implementation SomeClass
{
NSMutableArray *_someArray;
}
-(instancetype)initWithArraySize:(int)arraySize
{
if(self = [super init]) {
_someArray = [[NSMutableArray alloc] initWithCapacity:arraySize];
}
return self;
}
在旁注中,请始终记住类型以大写字母开头。在您的情况下,您的类型签名应使用" Int"而不是" int"。
我希望这会有所帮助。