Ruby未定义方法&x27+';零级:零级

Ruby未定义方法&x27+';零级:零级,ruby,Ruby,为什么这不是一个有效的操作 def get_highest_bar() #convert string to integer array data = @data.split(",") return Integer(data.max) end #rounds up to nearest factor of 100 def round_up(n) return 100 if n < 100 return (n+50)/100*100 end

为什么这不是一个有效的操作

def get_highest_bar()
   #convert string to integer array
   data = @data.split(",")

   return Integer(data.max)
end

 #rounds up to nearest factor of 100
 def round_up(n)
     return 100 if n < 100
     return (n+50)/100*100
 end

@axis_range_prefix = "chxr=" 
@y_axis_index = "1"

#error here:
axis_range = @axis_range_prefix + [@y_axis_index, "0", highest_bar.to_s()].join(",")
def get_highest_bar()
#将字符串转换为整数数组
数据=@data.split(“,”)
返回整数(data.max)
结束
#四舍五入至最接近的因子100
def四舍五入(n)
如果n<100,则返回100
返回(n+50)/100*100
结束
@轴\u范围\u前缀=“chxr=”
@y轴索引=“1”
#此处出现错误:
axis_range=@axis_range_前缀+[@y_axis_索引,“0”,最高的_条到_s()]。连接(“,”)

您有一个输入错误,最高的\u栏未定义。您应该调用获取最高的工具栏()。即

  • 在get\u highest\u bar方法中不需要get\u前缀。这是java的习惯,不是吗?事实上,你后来称它为最高的_栏,这证明一个好名字反映的是结果,而不是你为得到它而采取的行动

  • 方法定义后的参数是可选的,不是惯用的ruby

  • 返回整数(data.max)
    可能与您的想法不符。如果
    @data
    包含“1,10,2”,则最大值为2,因为它们作为字符串进行比较

  • 重写方法:

    def highest_bar
       @data.split(",").map(&:to_i).max
    end
    

    谢谢Java趋势是难以改变的。
    .map(&:to_i)
    部分是否将列表中的每个值都提供给to_i()函数?“&”和“:”是什么意思?抱歉,我是ruby新手。当我尝试执行
    @data.split(“,”).map(&:to_I).max时,它是
    .map{x|x.to_I}
    的缩写。我收到一个错误:“错误的参数类型符号(预期的过程)”,我明白了,这个快捷方式只适用于1.8.6+我工作的公司只有1.8.4真的吗?那很古老。该公司最好开始考虑升级计划。最高的_栏是一个局部变量的名称,在查看了我发布的内容后,我忘记了包含它。我的错误。
    def highest_bar
       @data.split(",").map(&:to_i).max
    end