簡體   English   中英

Ruby nil:NilClass 的未定義方法“+”

[英]Ruby undefined method '+' for nil:NilClass

為什么這不是一個有效的操作?

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(",")
  1. 您的 get_highest_bar 方法中不需要 get_ 前綴。 這是 java 的習慣,不是嗎? 你后來稱它為highest_bar 的事實證明,一個好名字反映的是結果,而不是你為得到它而采取的行動。

  2. 方法定義后的括號是可選的,不是慣用的 ruby。

  3. return Integer(data.max)可能不會像您想的那樣。 如果@data包含“1,10,2”,則最大值為 2,因為它們被作為字符串進行比較。

改寫方法:

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

你有一個錯字, highest_bar是未定義的。 你應該調用get_highest_bar ()。 IE

 axis_range = @axis_range_prefix + [@y_axis_index, "0", get_highest_bar.to_s()].join(",")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM