我想创建一个简单的(涉及集和列表)功能,可以执行以下操作,我不知道从哪里开始.
split:: [(a,b)] -> ([a],[b])
Run Code Online (Sandbox Code Playgroud) 我有一个想要列出所有a的函数dataType.
fn [] = []
fn (dt@(DataType t d y [(f,r)]):dts) = ["T:" ++ t ++ " D: " ++ d ++ " R: " ++ show y ++ "Ra" ++ show (fnAvg dt)] ++ fn dts
Run Code Online (Sandbox Code Playgroud)
其中t和d是字符串,y是一个int,f是一个字符串,r是一个int(不确定f和r是否重要,将解释为什么).
我得到错误非详尽的模式,并假设这是因为当列表中只有一个元素时我没有一个,所以我在其他模式之间添加了这个:
fn [dt@(DataType t d y [(f,r)])] = ["T:" ++ t ++ " D: " ++ d ++ " R: " ++ show y ++ "Ra" ++ show (fnAvg dt)]
Run Code Online (Sandbox Code Playgroud)
它编译了,但是当我调用它时,它再一次告诉我'非详尽的模式'.我很难想到我错过了什么样的模式,我是否应该在之后添加一个通配符模式来捕获所有内容?我不是在找人写出答案,但欢迎提示或建议.
我有一个涉及创建从超类继承方法和变量的不同类型的对象的项目,但是当我尝试更改子类中的变量(通过构造函数输入的值)时,变量保持与初始化的值相同在超级班.
这是超级变量之一:
public int grade = 0;
Run Code Online (Sandbox Code Playgroud)
这就是子类中发生的事情(newGrade来自构造函数).
System.out.println(newGrade);
newGrade = grade;
System.out.println(grade);
Run Code Online (Sandbox Code Playgroud)
输出显示newGrade = 1(或任何选定的)但等级= 0
我不确定它是否简单或我忽略了什么,但我会感激任何提示.
如果我想显示列表的全部内容,你可以"欺骗"并使用过滤功能来过滤任何内容吗?
根据我的理解,Haskell filter函数filter a bs将从a列表中过滤掉所有内容bs.
有一个简单的方法或变化filter会反其道而行之,只保留a"从表S bs,基本建立的名单a的.