如何将一种方法的“自我”价值传递给另一种方法?

哈里森G16

我正在寻找与以下类似的方法:传递“自我”值,以期获得我正在调用(get_dot的方法来访问值xy但是,存在类型不匹配,并且我不确定是否需要取消引用它或其他。这是一个示例,其中我通过@this在CoffeeScript中通过,另一种方法能够正确访问其值:

class Testing
  constructor: -> @x = 10

  doSomething: (value) ->
    return @x * value.x

  doSomething2: () ->
    @doSomething(@)

y = new Testing()
alert(y.doSomething2()) //100

我实际的Rust代码如下所示:

struct Vec2 {
    x: f32,
    y: f32,
} 

impl Vec2 {
    // Other stuff

    fn get_dot(&self, right: Vec2) -> f32 {
        self.x * right.x + self.y * right.y
    }

    fn get_magnitude(&self) -> f32 {
        (self.get_dot(self)).sqrt() // Problematic line!
    }
}

我收到以下错误:

src/vec2.rs:86:23: 86:27 error: mismatched types:
  expected `Vec2`,
    found `&Vec2`
  (expected struct `Vec2`,
    found &-ptr) [E0308]
src/vec2.rs:86         (self.get_dot(self)).sqrt()
                                 ^~~~
error: aborting due to previous error
j

您的代码有一个1个字符的修复程序:

struct Vec2 {
    x: f32,
    y: f32,
}

impl Vec2 {
    // Other stuff

    fn get_dot(&self, right: &Vec2) -> f32 { // note the type of right
        self.x * right.x + self.y * right.y
    }

    fn get_magnitude(&self) -> f32 {
        (self.get_dot(self)).sqrt()
    }
}

问题在于您的get_dot方法通过值而不是通过引用来接受第二个参数。这是不必要的(因为该方法不需要拥有该参数,只需能够访问它即可),并且如果您想像在in中那样调用它,则它实际上无法工作get_magnitude

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将一种方法的返回值传递给另一种方法?

如何将一种方法作为参数传递给另一种方法?

如何将值从一种方法传递给另一种方法

如何将局部变量的值传递给另一种方法

如何将代码生成的控件传递给另一种方法

如何将变量从一种方法传递到另一种方法?

如何将值从一种方法传递到另一种方法?

我如何将一种方法与另一种方法组合使用

将参数从一种方法传递给另一种方法

如何将联接SQL查询表结果传递给另一种方法?

如何将一种方法中的变量用于另一种方法?

如何将int值从一种方法转换为另一种方法

将一种测试方法的输出传递给另一种方法testng

将方法作为参数传递给Java中的另一种方法

如何将更新的全局类变量从一种方法传递到另一种方法?

将类传递给另一种方法

将varargs作为不同类型传递给另一种方法

将数据传递给另一种方法

将方法从一种方法传递到另一种方法时的逻辑

如何使仅将一个值的列表传递给另一种方法较不冗长

无法将一种方法调用到另一种方法

将一种方法的 var 用于另一种方法

无法将某些字段从一种方法传递到另一种方法

将值从一种方法传递到另一种方法

将值参数从一种方法传递到另一种方法

如何将一种方法的输出的特定部分转换为另一种?

如何从另一种方法正确调用一种方法

如何在scrapy中将信息从一种方法传递到另一种方法

如何使用JavaFX将复选框的值传递给另一种方法?