我正在实现一个简单的图书馆系统来跟踪我的 pdf 文件。
我有一个Subject枚举和一个Entry结构体,定义如下:
pub enum Subject {
Math,
Programming,
CompSci,
Language,
Misc,
None
}
pub struct Entry {
pub subject: Subject
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试实现一个函数,该函数将对 的向量进行操作Entry并返回Vec<&Entry>其条目与给定的匹配的a Subject。
我有一个简单的Library结构,它是 a 的包装器Vec<Entry>:
pub struct Library {
pub entries: Vec<Entry>
}
Run Code Online (Sandbox Code Playgroud)
为此,我需要迭代entries并且仅遍历其字段对应于所需的filter元素。为了实现这一点,我创建了一个将返回谓词函数的函数。.subjectsubject
这是get_subject函数:
impl Library {
pub fn get_subject(&self, subject: Subject) -> Vec<&Entry> {
let pred = subject_pred(subject);
self.entries.iter().filter(pred).collect::<Vec<&Entry>>()
}
} …Run Code Online (Sandbox Code Playgroud) 在for循环中,我试图更改我的“ Tile”类之一的数组变量的内容。我不断出现非法的表达错误开始,而且我终生无法找出问题所在。
首先,我将向您展示我的课程和for循环,所有这些地方都出了问题。
class Tile {
int value;
int pos;
Tile[] adj;
public Tile(int value, int pos) {
this.value = value;
this.pos = pos;
}
}
Run Code Online (Sandbox Code Playgroud)
和有问题的for循环:
public static void update(Tile[] arr) {
for(int i = 0; i < arr.length; i ++) {
Tile t = arr[i];
t.pos = i + 1;
if(i == 0)
t.adj = {arr[i]};
}
}
Run Code Online (Sandbox Code Playgroud)
因此,对于每个Tile,我都有一个名为adj的数组,但编译器不允许我定义t.adj(其中t是Tiles的arr []中的Tile)。告诉我第一个'{'大括号是该表达式的非法开头。
尤其奇怪的是,我可以在测试数组之前声明一个测试数组,以免编译器出现任何错误:
if(i == 0) {
Tile[] testTile = {arr[i]};
t.adj = {arr[i]}; //compiler should know that this is …Run Code Online (Sandbox Code Playgroud) 我想实现一个简单的RestrictedTypeclass,它有两个函数lowerBound和upperBound,每个函数都接受一个Restricted实例并返回一个Num。
class Restricted r where\n lowerBound :: (Num n) => r -> n\n upperBound :: (Num n) => r -> n\nRun Code Online (Sandbox Code Playgroud)\n我正在尝试使用以下类型创建此类型类的实例OrthogonalClass。
instance Restricted OrthogonalClass where\n lowerBound p = orthogonalLowerBound p\n upperBound p = orthogonalUpperBound p\nRun Code Online (Sandbox Code Playgroud)\n在哪里
\northogonalLowerBound :: (Num a) => OrthogonalClass -> a\northogonalLowerBound Legendre = a\n where a = (-1.0) :: Double\n-- orthogonalLowerBound Hermite = NegInf\nRun Code Online (Sandbox Code Playgroud)\n(-1.0)是 aDouble …