如何在Ruby中的方法之间传递变量?

Yul*_*lia 1 ruby

新手红宝石问题.

我上课了

class ReportPage < Page

def badge_item(item_int)
  case item_int
  when 1..50   then @item= 1
  when 50..100  then @item= 50
end

def check_completed_items_badge  
  badge_item(50)
  puts @item
end
end
Run Code Online (Sandbox Code Playgroud)

果然,它没有.这就是我的问题 - 如何在类的另一个方法中使用@item变量?

非常感谢!

tai*_*nsu 5

事情是你想念你的end关键词case.这个程序还有另一个问题.when(1..50)包含1到50之间的所有情况,并when(50..100)覆盖50到100,这将导致混淆原因badge_item(50)将进入第一行,设置@item1并退出该case ... end块.所以最后它会1在屏幕上打印出来.

为了更清楚地表达你的意图,你应该使用

def badge_item(item_int)
  @item = case item_int
  when 1..49 then 1 #two dots, cover 1 to 49
  when 50..100 then 50
  end
end
Run Code Online (Sandbox Code Playgroud)

要么

def badge_item(item_int)
  @item = case
  when 1...50 then 1 #three dots between, cover 1 to 49
  when 50..100 then 50
  end
end
Run Code Online (Sandbox Code Playgroud)