前两天看到朋友在博客里写了一篇《白马非马》,长长的一大段,那些文字我们就不说了,我最感兴趣的是他用python和ruby“证明”的白马不是马。虽说我从小接受的教育让我始终相信白马是马,不过还是挺有意思的。
让我们来看下他是怎么写的——
战国的时候有一位公孙龙先生,提出了这么一个观点,说“白马非马”。我们的教科书上说那叫诡辩,白马明明也是马么。那么咱先写个程序来验证一下:
Python程序略
Ruby程序
class Horse
end
class WhiteHorse < Horse
end
puts Horse == WhiteHorse
结果是:false
他用程序语言复述了一下公孙龙的意思,的确没什么错。只是从语法上来看,==是用来判断两实例是否相同的,就算Ruby中类本身也是实例,可是用==也决不会变成true的,就是说如果这么写,白马永远都不是马了。所以我就改了下:
class Horse
end
class WhiteHorse < Horse
end
wh = WhiteHorse.new
puts wh.is_a? Horse
结果是:true
照我这种写法随便哪个WhiteHorse实例都是马,找不出不是马的白马,所以白马就是马啦。
注:本文纯属娱乐