Re: [問題] bug?
哈, 剛看到也以為是bug, 但是很可惜... 不是bug... XD
首先, Ruby 的方法呼叫是可以用空白來省略括號的
所以 '2'.to_i *4 被 Ruby parser 解析成 '2'.to_i(*4)
又參數列中用*開頭也是合法, 那是不定參數列的意思
而to_i和to_s傳參數是換基底的意思, 可傳2進位到36進位
所以 '2'.to_i *4 是求 2 的四進位 =>還是 2
2.to_s *2 是求 2 的二進位 => 變成 "10"
不信你傳 2.to_s *1 或 2.to_s *37 就爆炸了, 會出現 invalid radix
※ 引述《leondemon (狗狗)》之銘言:
: 環境:1.9.2
: 狀況:
: 用space分隔下面的operation且列印出來
: p '2'.to_i*4
: p '2'.to_i *4
: p '2'.to_i * 4
: Results:
: => 8
: => 2
: => 8
: *******************************
: 相同的狀況,把integer換成string
: p 2.to_s*2
: p 2.to_s *2
: p 2.to_s * 2
: Results:
: => 22
: => 10
: => 22
: 第二個是本來就會這樣 還是bug?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.240.174.24
推
05/27 21:10, , 1F
05/27 21:10, 1F
→
05/27 21:10, , 2F
05/27 21:10, 2F
→
05/27 21:23, , 3F
05/27 21:23, 3F
→
05/27 21:23, , 4F
05/27 21:23, 4F
→
05/27 21:24, , 5F
05/27 21:24, 5F
推
05/15 10:04, , 6F
05/15 10:04, 6F
討論串 (同標題文章)
Ruby 近期熱門文章
PTT數位生活區 即時熱門文章