Re: [問題] 如何設定一個會變動的Parameter
※ 引述《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
討論串 (同標題文章)
Ruby 近期熱門文章
PTT數位生活區 即時熱門文章