小编ejo*_*o13的帖子

匹配语句中明显未使用的变量

我正在实现一个简单的图书馆系统来跟踪我的 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)

enums match rust

3
推荐指数
1
解决办法
817
查看次数

更改数组的值时遇到表达式的非法开头错误

在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)

java arrays

0
推荐指数
1
解决办法
93
查看次数

如何在以下非常简单的函数中解决此类实例错误?

我想实现一个简单的RestrictedTypeclass,它有两个函数lowerBoundupperBound,每个函数都接受一个Restricted实例并返回一个Num

\n
class Restricted r where\n    lowerBound :: (Num n) => r -> n\n    upperBound :: (Num n) => r -> n\n
Run Code Online (Sandbox Code Playgroud)\n

我正在尝试使用以下类型创建此类型类的实例OrthogonalClass

\n
instance Restricted OrthogonalClass where\n    lowerBound p = orthogonalLowerBound p\n    upperBound p = orthogonalUpperBound p\n
Run Code Online (Sandbox Code Playgroud)\n

在哪里

\n
orthogonalLowerBound :: (Num a) => OrthogonalClass -> a\northogonalLowerBound Legendre = a\n    where a = (-1.0) :: Double\n-- orthogonalLowerBound Hermite = NegInf\n
Run Code Online (Sandbox Code Playgroud)\n

(-1.0)是 aDouble …

haskell types

0
推荐指数
1
解决办法
75
查看次数

标签 统计

arrays ×1

enums ×1

haskell ×1

java ×1

match ×1

rust ×1

types ×1