gpt4 book ai didi

ruby - 创建圆形, ruby 类

转载 作者:行者123 更新时间:2023-12-03 08:27:20 24 4
gpt4 key购买 nike

这是关于通过类创建几何形状的第二个问题。

因此,我想创建一个圆。

  • 首先我创建一个类Point
  • 然后-使用两个点(这将是我们的直径)创建类线
  • 现在我们必须计算这些点之间的距离(直径)
  • 然后我们创建类Circle
  • 并使用直径创建一个圆形

  • 希望,到目前为止一切顺利。但是当我开始编码时,我会遇到一些麻烦。

    创建类Point:
    class Point
    attr_accessor :x, :y
    def initialize
    @x = 10
    @y = 10
    end
    end

    然后,对Line进行分类:
    class Line
    attr_accessor :p1, :p2
    def initialize
    @p1 = Point.new
    @p2 = Point.new
    end
    def distance
    @distance = Math::sqrt((@p2.x - @p1.x) ** 2 + (@p2.y - @p1.y) ** 2) # -> rb.16
    end
    end

    在线路课上,问题开始了。如您所知,我想定义一种方法来计算Line类中点之间的距离。谷歌到谷歌搜索的计算公式为:

    ((point_2.x-point_1.x)** 2 +(point_2.y-point_1.y)** 2)的平方根
    #points
    point_01 = Point.new
    point_01.x = 20
    point_02 = Point.new
    point_02.x = 10

    #line
    d = Line.new
    d.p1 = point_01
    d.p2 = point_02
    dis = d.distance # -> rb.40
    print dis

    但这给我一个错误:
    rb:16:in `distance': wrong number of arguments (1 for 0) (ArgumentError)

    rb:40: in `<top (required)>'
    from -e:1:in `load'
    from -e:1:in `<main>'

    这些错误是什么意思?

    下一步将使用公式计算周长(C):

    C = Pi *直径

    是对的吗?
    class Circle
    attr_accessor :diametr, :c
    def initialize
    @diametr = Line.new
    end
    def circle_length
    return @c = @diametr * Math::PI
    end
    end
    #circle
    circle = Circle.new
    circle.diametr = d
    res = circle.circle_length

    请注意,我只是在学习,这可能是一个愚蠢的问题,但我仍然不明白。

    谢谢您帮忙!

    是的,在下面的评论中,使用公式计算周长后,错误出现了Circle类。你能帮我吗

    最佳答案

    我运行了您的代码,但没有收到rb:16:in distance': wrong number of arguments (1 for 0) (ArgumentError)错误。
    circle_length方法的确会引发错误,这是因为您要乘以@diameter的实例Line

    为此,您需要为*实现Line:

    class Line
    def *(other)
    distance * other
    end
    end

    有关此处发生的情况的进一步说明:
    *类似于ruby中的任何其他方法,具有一些特殊的语法。当执行 4 * 5时,您将在 *(这只是另一个ruby对象, 4的实例)上调用 Integer方法,并将 5作为其参数传递。上面的代码实现/定义了 *Line方法,基本上与Integer也实现 *的方法相同。

    它以数字作为参数,并返回将 distance方法的结果与参数相乘的结果。

    关于ruby - 创建圆形, ruby 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37598363/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com