Ruby – 為何 Range 不能大到小?

(1..10).to_a
=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

(10..1).to_a
=> []

所以

for i in 1..10 do
puts i
end

會印 1 到 10

for i in 10..1 do
puts i
end

卻不會印 10 到 1

雖然可以用 10.downto(1)

不過還是太 Orz 了….


  • 留言者: Duncan
  • Email:
  • 網址:
  • 日期: 2005-09-27 11:48:25

或許 Python 更適合你。


  • 留言者: JiaYun
  • Email:
  • 網址:
  • 日期: 2005-09-27 13:49:19

Python:

for i in reversed(xrange(1,11)):

print i

這學期有個 project 有點想用 Ruby on Rails 做

如果 Python 的話也許可以用 http://www.djangoproject.com/

不過有辦法學那麼多嗎…. Orz


  • 留言者: T55555
  • Email:
  • 網址:
  • 日期: 2005-09-28 02:36:30

Please check the ruby-talk: 8993 and 39342

http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/8993

http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/39342

And be aware of Range using on Array index:

For example:

ary = %w[a b c d e]

ary[1..-1] # => [‘b’, ‘c’, ‘d’, ‘e’]

If we *assume* Range support from “big” to “small”,

the example 1..-1 will like have 1, 0, -1 elements

and ary[1..-1] will returns [‘b’, ‘a’, ‘e’]

but the current design is not like this way …

The main raison Range do not support from “big” to “small” is

because the Range is define base on object’s “succ”( or alias “next”) and “”

BTW: You could “redefine” the Range to behaviour as you like.


  • 留言者: T55555
  • Email:
  • 網址:
  • 日期: 2005-09-28 02:41:17

“succ” and ” < = > “

後面是 *宇宙飛碟* operator.


  • 留言者: T55555
  • Email:
  • 網址:
  • 日期: 2005-09-28 02:55:29

Not prefect at all ( need to take care of === also, string Range … etc),

but it seems to work for what you expect.

class Range

alias old_each each

def each(&block)

return old_each(&block) unless first > last

first.downto(last) { |e| yield e }

return self

end

end

p (1..10).to_a

p (10..1).to_a

(10..1).each { |e| p e }


  • 留言者: JiaYun
  • Email:
  • 網址:
  • 日期: 2005-09-28 03:18:35

也許它可以加個 pred 或 prev, 再把用在 array 的情形改一下, 功能上會更對稱一點….

我好像 柯南 – 引爆摩天樓 裡那個超執著對稱的森谷帝二教授…. XD


  • 留言者: Duncan
  • Email:
  • 網址:
  • 日期: 2005-09-28 16:19:31

可以用 range(1, 11)[::-1] 或是 xrange(10, 0, -1)。


  • 留言者: JiaYun
  • Email:
  • 網址:
  • 日期: 2005-09-29 01:18:24

我想搭紅寶石列車,Duncan 集團誘惑我乘巨蟒….

膠帶殘膠去除術

有時一些東西被膠帶貼到,膠帶撕下來後上面會殘留黏黏的膠

如果是表面光滑的東西,只要用橡皮擦擦一擦,應該就能弄掉了

書的封面,塑膠表面…. 都滿好用的

柯南劇場版9 – 水平線上的陰謀

毛利小五郎又做出了偶爾會出現的細膩推理 😛

我覺得最精彩的是推測兇手為何側著身子…. 連柯南都忍不住說了句『なるほど』

如果只是不想讓人看見臉,確實只要把頭低一點或再稍微轉到一邊就好了,沒什麼必要側身

Fedora Core 4 & Subclipse

之前 Fedora Core 3 的 Subversion rpm 沒附 javahl,要用 Subclipse 實在很麻煩(svn command line 模式又問題一堆不能用)

現在 Core 4 有 subversion-javahl 這個 rpm,只要裝好把 libsvnjavahl-1.so 這個檔 ln -s 到 java 目錄下的 jre/lib/i386 就好了,Subclipse 本身有 svn-javahl.jar 所以 subversion-javahl 附的這個 .jar 可以不用理會

動畫兒童去上學了

我媽媽幫人帶的小女孩去上幼稚園了,她還沒生下來就開始看動畫,現在連海賊王都有看

有一天她對我說:『我去上學會不會發現魯夫?』

我說:『發現魯夫怎麼辦?』

她說:『發現魯夫,我就喜歡他!』

我說:『發現香吉士呢?』(她最喜歡魯夫和香吉士)

她說:『發現香吉士,我就打扮成水蜜桃姊姊的樣子讓他喜歡我。』

每次看到我電腦上 Eclipse 的 logo 都會說『我要看星球,快點按…. 快點….』,打開來之後她又都不覺得那就是她想看的星球….XD

開學前的不幸

硬碟掛一顆,LCD 畫面怪怪的

LCD 修理不知道要多久,還好 CRT 還留著,可以暫時用,只是畫面會閃爍抖動…. 嗚嗚

硬碟三、四年了,那時保固好像都只有一年或三年,只好再買一顆

滿有趣的是 Seagate 和 Maxtor 的硬碟現在都保固五年,Maxtor 的還終生可以維修

跟之前過保固就不修理的情形差真多,大概是為了競爭的關係?

我就受終生保修的誘惑,買了 Maxtor 的….

不過硬碟檢查工具上 Maxtor 可以再加強,之前 Seagate 提供光碟 image 檔版本了,Maxtor 還只有磁片版而已。現在 Maxtor 也有光碟 image 了,不過還沒有像 Seagate 那樣漂亮的 GUI 介面,掃描時也沒有百分比的進度表…. 😛

壞掉的那顆硬碟很奇怪,比較常用的 Linux / 分割區都沒壞,從那個分割區之後開始壞

我用 SystemRescueCd 開機,再用 Partimage 把那個分割區備份出來,省了重灌 Linux 的功夫。用的時候發現 Partimage 有個要注意的地方是,要還原 image 回去的分割區不能比 image 來源分割區小…. 我一開始還想說它既然會偵測有使用的空間有多少,要還原的分割區只要比使用到的空間大就好了,原來不是。

Fedora Core 4 下 JDK 1.5 中文設定

沒記錯的話 Fedora Core 3 時 JDK 1.5 什麼都不調,中文就有正確顯示

換了 Fedora Core 4 和 JDK 1.5.0_04 中文卻變成框框,除非用 GTK look and feel 才會正常

這裡提到的設定 可以不用 GTK L&F 也能正常顯示中文

把簡單的方法節錄一下:

1. 建立 $JAVA_HOME/jre/lib/fonts/fallback 目錄

2. 將中文字體 cp 或 ln -s 到該目錄中