Re: [問題] 如何設定一個會變動的Parameter

看板Ruby作者 (godfat 真常)時間16年前 (2009/06/21 14:06), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/4 (看更多)
※ 引述《makoto63215 (隱匿的老頭)》之銘言: : : 環境: : : e.g. Ruby 1.8.6 OS:Windows XP : 抱歉 的確說得不清楚 : 下面這些程式碼是要模擬一個假想情況: : 在一個邊長2公里的正方形空地,亂數分佈100個人 : 每個人身上都有一個ID供辨認,然後每個人一開始都帶有固定的能量 : 然後每一次每個人動作不同, : 動作有站著不動2分鐘,原地跑步2分鐘,青蛙跳20下,伏地挺身20下..等 : 所以每個人每次消耗的能量也不一樣 根據下面的if敘述來決定做哪一種動作 : 我的用意就是要設定一個變數 找出每一次每個人身上所剩餘的能量 : 那個變數名稱是Capacity_cur 這段我看懂了,除了最後一段,一個變數要怎麼存每一次每個人身上的剩餘能量? 假設你想用 hash, 格式是 id => capacity, 那麼來看下面的程式 : 下面是修正的程式碼 : : module Arc : : InitialCapacity = 40000 : : end : : Class XXX : : include Arc : : attr_accessor :capacity : : def initialize() : : @capacity = Arc::InitialCapacity : : @ID = id : @site = site : : end : : end : srt = 0.67 : srand(0) : total = 100 : : 50.times { : : mebers = Array.new(total){|| XXX.new([(rand*50),(rand*50)] ) } : : Capacity_cur = {"mebers.ID"=>"mebers.capacity"} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ : : Dis = Capacity_cur*srt ^^^^^^^^^^^^^^^^ 你這樣是拿 hash 去乘 0.67, 當然不可能對。你實際程式我猜不是這樣寫的? 但我猜不到你原本程式怎麼寫的... : : if ................. : : ................. : : elseif ............. ^^^^^^ 應為 elsif : : ............. : : else ............. : : ............. : : end : : } : ps:先前想的雜湊,如果不在Capacity_cur後方加上 to_f ,就會產生下面的訊息: : in '*': String can't be coerced into Float(TypeError) : 我的解讀是 Capacity_cur的值,被當作是字串,所以不能跟浮點數相乘 : 但是加上 to_f後,就沒有跑出任何訊息了 : 我覺得Capacity_cur後面加上to_f,判定值為0 hash 也不能 to_f, 這邊跟你的文字描述接不上了 -- In Lisp, you don't just write your program down toward the language, you also build the language up toward your program. 《Programming Bottom-Up》- Paul Graham 1993 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.135.28.18
文章代碼(AID): #1AFStbTQ (Ruby)
文章代碼(AID): #1AFStbTQ (Ruby)